forked from community/device-mgt-plugins
Merge branch 'master' of https://github.com/wso2/carbon-device-mgt-plugins
commit
a30fbfdbec
@ -1,72 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!--
|
|
||||||
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
|
||||||
~
|
|
||||||
~ WSO2 Inc. licenses this file to you under the Apache License,
|
|
||||||
~ Version 2.0 (the "License"); you may not use this file except
|
|
||||||
~ in compliance with the License.
|
|
||||||
~ You may obtain a copy of the License at
|
|
||||||
~
|
|
||||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
~
|
|
||||||
~ Unless required by applicable law or agreed to in writing,
|
|
||||||
~ software distributed under the License is distributed on an
|
|
||||||
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
~ KIND, either express or implied. See the License for the
|
|
||||||
~ specific language governing permissions and limitations
|
|
||||||
~ under the License.
|
|
||||||
-->
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
||||||
|
|
||||||
<parent>
|
|
||||||
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
|
||||||
<artifactId>iot-analytics</artifactId>
|
|
||||||
<version>3.0.3-SNAPSHOT</version>
|
|
||||||
<relativePath>../pom.xml</relativePath>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>org.wso2.carbon.iot.das.rest.api</artifactId>
|
|
||||||
<name>WSO2 Carbon - IoT Server REST API</name>
|
|
||||||
<packaging>pom</packaging>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.felix</groupId>
|
|
||||||
<artifactId>maven-scr-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>generate-scr-descriptor</id>
|
|
||||||
<goals>
|
|
||||||
<goal>scr</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.felix</groupId>
|
|
||||||
<artifactId>maven-bundle-plugin</artifactId>
|
|
||||||
<extensions>true</extensions>
|
|
||||||
<configuration>
|
|
||||||
<instructions>
|
|
||||||
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
|
|
||||||
<Bundle-Name>${project.artifactId}</Bundle-Name>
|
|
||||||
<Private-Package>
|
|
||||||
</Private-Package>
|
|
||||||
<Export-Package>
|
|
||||||
</Export-Package>
|
|
||||||
<Import-Package>
|
|
||||||
</Import-Package>
|
|
||||||
<DynamicImport-Package>*</DynamicImport-Package>
|
|
||||||
</instructions>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
|
|
||||||
</project>
|
|
@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"version" : "1.0.0"
|
"version": "1.0.0"
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function onRequest(context) {
|
||||||
|
var viewModel = {};
|
||||||
|
var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"];
|
||||||
|
var serviceInvokers = require("/app/modules/oauth/token-protected-service-invokers.js")["invokers"];
|
||||||
|
var url = devicemgtProps["httpsURL"] + "/api/device-mgt/v1.0/admin/devicetype/deploy/arduino/status";
|
||||||
|
serviceInvokers.XMLHttp.get(
|
||||||
|
url, function (responsePayload) {
|
||||||
|
var responseContent = responsePayload.status;
|
||||||
|
new Log().error(responseContent);
|
||||||
|
if ("204" == responsePayload.status) {
|
||||||
|
viewModel["displayStatus"] = "Display";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
function (responsePayload) {
|
||||||
|
//do nothing.
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return viewModel;
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function onRequest(context){
|
||||||
|
var viewModel = {};
|
||||||
|
var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"];
|
||||||
|
var serviceInvokers = require("/app/modules/oauth/token-protected-service-invokers.js")["invokers"];
|
||||||
|
var url = devicemgtProps["httpsURL"] + "/api/device-mgt/v1.0/admin/devicetype/deploy/raspberrypi/status";
|
||||||
|
serviceInvokers.XMLHttp.get(
|
||||||
|
url, function (responsePayload) {
|
||||||
|
var responseContent = responsePayload.status;
|
||||||
|
new Log().error(responseContent);
|
||||||
|
if ("204" == responsePayload.status) {
|
||||||
|
viewModel["displayStatus"] = "Display";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
function (responsePayload) {
|
||||||
|
//do nothing.
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return viewModel;
|
||||||
|
}
|
@ -1,61 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
|
||||||
*
|
|
||||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
|
||||||
* in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.wso2.carbon.device.mgt.iot.virtualfirealarm.service.impl.util.util;
|
|
||||||
|
|
||||||
import org.apache.commons.io.FileUtils;
|
|
||||||
import org.apache.commons.io.IOUtils;
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.wso2.carbon.base.ServerConfiguration;
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
|
||||||
import org.wso2.carbon.device.mgt.iot.virtualfirealarm.service.impl.util.ZipArchive;
|
|
||||||
import org.wso2.carbon.utils.CarbonUtils;
|
|
||||||
import org.wso2.carbon.utils.NetworkUtils;
|
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
|
||||||
import java.io.BufferedOutputStream;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.net.SocketException;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.zip.ZipEntry;
|
|
||||||
import java.util.zip.ZipOutputStream;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides utility methods required by the device type plugins.
|
|
||||||
*/
|
|
||||||
public class Utils {
|
|
||||||
|
|
||||||
public static final String HOST_NAME = "HostName";
|
|
||||||
private static final Log log = LogFactory.getLog(Utils.class);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,199 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
~ Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
|
||||||
~
|
|
||||||
~ WSO2 Inc. licenses this file to you under the Apache License,
|
|
||||||
~ Version 2.0 (the "License"); you may not use this file except
|
|
||||||
~ in compliance with the License.
|
|
||||||
~ You may obtain a copy of the License at
|
|
||||||
~
|
|
||||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
~
|
|
||||||
~ Unless required by applicable law or agreed to in writing,
|
|
||||||
~ software distributed under the License is distributed on an
|
|
||||||
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
~ KIND, either express or implied. See the License for the
|
|
||||||
~ specific language governing permissions and limitations
|
|
||||||
~ under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<parent>
|
|
||||||
<artifactId>virtual-fire-alarm-plugin</artifactId>
|
|
||||||
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
|
||||||
<version>3.0.6-SNAPSHOT</version>
|
|
||||||
<relativePath>../pom.xml</relativePath>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>org.wso2.carbon.device.mgt.iot.virtualfirealarm.scep.api</artifactId>
|
|
||||||
<packaging>war</packaging>
|
|
||||||
<name>WSO2 Carbon - IoT Server SCEP Server API</name>
|
|
||||||
<description>WSO2 Carbon - Virtual FireAlarm SCEP Server API Implementation</description>
|
|
||||||
<url>http://wso2.org</url>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<!-- CDM -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.device.mgt.common</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.device.mgt.core</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.apache.axis2.wso2</groupId>
|
|
||||||
<artifactId>axis2-client</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.certificate.mgt.core</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>commons-codec</groupId>
|
|
||||||
<artifactId>commons-codec</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
|
|
||||||
<!--CXF -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.cxf</groupId>
|
|
||||||
<artifactId>cxf-rt-frontend-jaxws</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.cxf</groupId>
|
|
||||||
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.cxf</groupId>
|
|
||||||
<artifactId>cxf-rt-transports-http</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!--JAX-RS -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.codehaus.jackson</groupId>
|
|
||||||
<artifactId>jackson-core-asl</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.codehaus.jackson</groupId>
|
|
||||||
<artifactId>jackson-jaxrs</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>javax</groupId>
|
|
||||||
<artifactId>javaee-web-api</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>javax.ws.rs</groupId>
|
|
||||||
<artifactId>jsr311-api</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-httpclient.wso2</groupId>
|
|
||||||
<artifactId>commons-httpclient</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.wso2.carbon</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.utils</artifactId>
|
|
||||||
<scope>provided</scope>
|
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.bouncycastle.wso2</groupId>
|
|
||||||
<artifactId>bcprov-jdk15on</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.wso2.carbon</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.user.api</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.wso2.carbon</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.queuing</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.wso2.carbon</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.base</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.apache.axis2.wso2</groupId>
|
|
||||||
<artifactId>axis2</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.igniterealtime.smack.wso2</groupId>
|
|
||||||
<artifactId>smack</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.igniterealtime.smack.wso2</groupId>
|
|
||||||
<artifactId>smackx</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>jaxen</groupId>
|
|
||||||
<artifactId>jaxen</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>commons-fileupload.wso2</groupId>
|
|
||||||
<artifactId>commons-fileupload</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.apache.ant.wso2</groupId>
|
|
||||||
<artifactId>ant</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.apache.ant.wso2</groupId>
|
|
||||||
<artifactId>ant</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>commons-httpclient.wso2</groupId>
|
|
||||||
<artifactId>commons-httpclient</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.eclipse.equinox</groupId>
|
|
||||||
<artifactId>javax.servlet</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>org.wso2.carbon</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.registry.api</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-codec</groupId>
|
|
||||||
<artifactId>commons-codec</artifactId>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<encoding>UTF-8</encoding>
|
|
||||||
<source>${wso2.maven.compiler.source}</source>
|
|
||||||
<target>${wso2.maven.compiler.target}</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-war-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<warName>virtual_firealarm_scep</warName>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
|
|
||||||
</project>
|
|
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function onRequest(context){
|
||||||
|
var viewModel = {};
|
||||||
|
var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"];
|
||||||
|
var serviceInvokers = require("/app/modules/oauth/token-protected-service-invokers.js")["invokers"];
|
||||||
|
var url = devicemgtProps["httpsURL"] + "/api/device-mgt/v1.0/admin/devicetype/deploy/virtual_firealarm/status";
|
||||||
|
serviceInvokers.XMLHttp.get(
|
||||||
|
url, function (responsePayload) {
|
||||||
|
var responseContent = responsePayload.status;
|
||||||
|
new Log().error(responseContent);
|
||||||
|
if ("204" == responsePayload.status) {
|
||||||
|
viewModel["displayStatus"] = "Display";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
function (responsePayload) {
|
||||||
|
//do nothing.
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return viewModel;
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||||
|
|
||||||
|
|
||||||
|
public class Activity {
|
||||||
|
|
||||||
|
public enum Type {
|
||||||
|
CONFIG, MESSAGE, INFO, COMMAND, PROFILE, POLICY
|
||||||
|
}
|
||||||
|
private String activityId;
|
||||||
|
private String code;
|
||||||
|
private Type type;
|
||||||
|
private String createdTimeStamp;
|
||||||
|
|
||||||
|
public String getActivityId() {
|
||||||
|
return activityId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setActivityId(String activityId) {
|
||||||
|
this.activityId = activityId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Type getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(Type type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCreatedTimeStamp() {
|
||||||
|
return createdTimeStamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreatedTimeStamp(String createdTimeStamp) {
|
||||||
|
this.createdTimeStamp = createdTimeStamp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
|
||||||
*
|
|
||||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
|
||||||
* in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Number of Resources.
|
|
||||||
*/
|
|
||||||
public class BasePaginatedResult {
|
|
||||||
@ApiModelProperty(value = "Number of total resources.", example = "2")
|
|
||||||
@JsonProperty("count")
|
|
||||||
private int count;
|
|
||||||
|
|
||||||
public int getCount() {
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCount(int count) {
|
|
||||||
this.count = count;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,34 @@
|
|||||||
|
package org.wso2.carbon.device.mgt.input.adapter.extension;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This hold the input adapter extension service.
|
||||||
|
*/
|
||||||
|
public interface InputAdapterExtensionService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return content validator for the given type.
|
||||||
|
* @param type type of the content validator
|
||||||
|
* @return content validator for the given type.
|
||||||
|
*/
|
||||||
|
ContentValidator getContentValidator(String type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return default content validator for the given type.
|
||||||
|
* @return default content validator for the given type.
|
||||||
|
*/
|
||||||
|
ContentValidator getDefaultContentValidator();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return content transformer for the given type.
|
||||||
|
* @param type of the content transfomer
|
||||||
|
* @return content transformer for the given type.
|
||||||
|
*/
|
||||||
|
ContentTransformer getContentTransformer(String type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return default content transformer for the given type.
|
||||||
|
* @return default content transformer for the given type.
|
||||||
|
*/
|
||||||
|
ContentTransformer getDefaultContentTransformer();
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package org.wso2.carbon.device.mgt.input.adapter.extension;
|
||||||
|
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.internal.InputAdapterServiceDataHolder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This hold the input adapter extension service implementation.
|
||||||
|
*/
|
||||||
|
public class InputAdapterExtensionServiceImpl implements InputAdapterExtensionService {
|
||||||
|
private static final String DEFAULT = "default";
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ContentValidator getContentValidator(String type) {
|
||||||
|
return InputAdapterServiceDataHolder.getInstance().getContentValidatorMap().get(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ContentValidator getDefaultContentValidator() {
|
||||||
|
return InputAdapterServiceDataHolder.getInstance().getContentValidatorMap().get(DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ContentTransformer getContentTransformer(String type) {
|
||||||
|
return InputAdapterServiceDataHolder.getInstance().getContentTransformerMap().get(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ContentTransformer getDefaultContentTransformer() {
|
||||||
|
return InputAdapterServiceDataHolder.getInstance().getContentTransformerMap().get(DEFAULT);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,96 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package org.wso2.carbon.device.mgt.input.adapter.extension.internal;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.osgi.service.component.ComponentContext;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.ContentTransformer;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.ContentValidator;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.InputAdapterExtensionService;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.InputAdapterExtensionServiceImpl;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.transformer.DefaultContentTransformer;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.validator.DefaultContentValidator;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.validator.HTTPContentValidator;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.validator.MQTTContentValidator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @scr.component name="input.adapter.extension.adapterService.component" immediate="true"
|
||||||
|
* @scr.reference name="InputAdapterServiceComponent.service"
|
||||||
|
* interface="org.wso2.carbon.device.mgt.input.adapter.extension.ContentValidator"
|
||||||
|
* cardinality="0..n"
|
||||||
|
* policy="dynamic"
|
||||||
|
* bind="setContentValidator"
|
||||||
|
* unbind="unsetContentValidator"
|
||||||
|
* * @scr.reference name="InputAdapterServiceComponent.service"
|
||||||
|
* interface="org.wso2.carbon.device.mgt.input.adapter.extension.ContentTransformer"
|
||||||
|
* cardinality="0..n"
|
||||||
|
* policy="dynamic"
|
||||||
|
* bind="setContentTransformer"
|
||||||
|
* unbind="unsetContentTransformer"
|
||||||
|
*/
|
||||||
|
public class InputAdapterServiceComponent {
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(
|
||||||
|
InputAdapterServiceComponent.class);
|
||||||
|
|
||||||
|
protected void activate(ComponentContext context) {
|
||||||
|
try {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Successfully deployed the input adapter extension service");
|
||||||
|
}
|
||||||
|
|
||||||
|
InputAdapterServiceDataHolder.getInstance().addContentTransformer(new DefaultContentTransformer());
|
||||||
|
InputAdapterServiceDataHolder.getInstance().addContentValidator(new DefaultContentValidator());
|
||||||
|
InputAdapterServiceDataHolder.getInstance().addContentValidator(new HTTPContentValidator());
|
||||||
|
InputAdapterServiceDataHolder.getInstance().addContentValidator(new MQTTContentValidator());
|
||||||
|
|
||||||
|
context.getBundleContext().registerService(InputAdapterExtensionService.class,
|
||||||
|
new InputAdapterExtensionServiceImpl(), null);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
log.error("Can not create the input adapter service ", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setContentValidator(ContentValidator contentValidator) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Setting ContentValidator Service");
|
||||||
|
}
|
||||||
|
InputAdapterServiceDataHolder.getInstance().addContentValidator(contentValidator);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void unsetContentValidator(ContentValidator contentValidator) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Un-setting ContentValidator Service");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setContentTransformer(ContentTransformer contentTransformer) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Setting contentTransformer Service");
|
||||||
|
}
|
||||||
|
InputAdapterServiceDataHolder.getInstance().addContentTransformer(contentTransformer);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void unsetContentValidator(ContentTransformer contentTransformer) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Un-setting ContentTransformer Service");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
* use this file except in compliance with the License. You may obtain a copy
|
||||||
|
* of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software distributed
|
||||||
|
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||||
|
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.wso2.carbon.device.mgt.input.adapter.extension.internal;
|
||||||
|
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.ContentTransformer;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.ContentValidator;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* common place to hold some OSGI service references.
|
||||||
|
*/
|
||||||
|
public class InputAdapterServiceDataHolder {
|
||||||
|
|
||||||
|
private static InputAdapterServiceDataHolder inputAdapterServiceDataHolder = new InputAdapterServiceDataHolder();
|
||||||
|
private static Map<String, ContentValidator> contentValidatorMap = new HashMap<>();
|
||||||
|
private static Map<String, ContentTransformer> contentTransformerMap = new HashMap<>();
|
||||||
|
|
||||||
|
private InputAdapterServiceDataHolder() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static InputAdapterServiceDataHolder getInstance() {
|
||||||
|
return inputAdapterServiceDataHolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, ContentValidator> getContentValidatorMap() {
|
||||||
|
return contentValidatorMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addContentValidator(ContentValidator contentValidator) {
|
||||||
|
InputAdapterServiceDataHolder.contentValidatorMap.put(contentValidator.getType(), contentValidator);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, ContentTransformer> getContentTransformerMap() {
|
||||||
|
return contentTransformerMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addContentTransformer(ContentTransformer contentTransformer) {
|
||||||
|
InputAdapterServiceDataHolder.contentTransformerMap.put(contentTransformer.getType(), contentTransformer);
|
||||||
|
}
|
||||||
|
}
|
12
components/extensions/cdmf-transport-adapters/input/org.wso2.carbon.device.mgt.input.adapter.extension/src/main/java/org/wso2/carbon/device/mgt/input/adapter/extension/DefaultContentTransformer.java → components/extensions/cdmf-transport-adapters/input/org.wso2.carbon.device.mgt.input.adapter.extension/src/main/java/org/wso2/carbon/device/mgt/input/adapter/extension/transformer/DefaultContentTransformer.java
12
components/extensions/cdmf-transport-adapters/input/org.wso2.carbon.device.mgt.input.adapter.extension/src/main/java/org/wso2/carbon/device/mgt/input/adapter/extension/DefaultContentTransformer.java → components/extensions/cdmf-transport-adapters/input/org.wso2.carbon.device.mgt.input.adapter.extension/src/main/java/org/wso2/carbon/device/mgt/input/adapter/extension/transformer/DefaultContentTransformer.java
11
components/extensions/cdmf-transport-adapters/input/org.wso2.carbon.device.mgt.input.adapter.extension/src/main/java/org/wso2/carbon/device/mgt/input/adapter/extension/DefaultContentValidator.java → components/extensions/cdmf-transport-adapters/input/org.wso2.carbon.device.mgt.input.adapter.extension/src/main/java/org/wso2/carbon/device/mgt/input/adapter/extension/validator/DefaultContentValidator.java
11
components/extensions/cdmf-transport-adapters/input/org.wso2.carbon.device.mgt.input.adapter.extension/src/main/java/org/wso2/carbon/device/mgt/input/adapter/extension/DefaultContentValidator.java → components/extensions/cdmf-transport-adapters/input/org.wso2.carbon.device.mgt.input.adapter.extension/src/main/java/org/wso2/carbon/device/mgt/input/adapter/extension/validator/DefaultContentValidator.java
@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.wso2.carbon.device.mgt.input.adapter.extension.validator;
|
||||||
|
|
||||||
|
import com.jayway.jsonpath.JsonPath;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.json.simple.JSONArray;
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
|
import org.json.simple.parser.ParseException;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.ContentInfo;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.extension.ContentValidator;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class HTTPContentValidator implements ContentValidator {
|
||||||
|
private static final Log log = LogFactory.getLog(HTTPContentValidator.class);
|
||||||
|
private static String JSON_ARRAY_START_CHAR = "[";
|
||||||
|
private static String CDMF_SCOPE_PREFIX = "cdmf";
|
||||||
|
private static String CDMF_SCOPE_SEPERATOR = "/";
|
||||||
|
private static String CDMF_HTTP_CONTENT_VALIDATOR = "iot-http";
|
||||||
|
public static final String DEVICE_ID_JSON_PATH = "event.metaData.deviceId";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getType() {
|
||||||
|
return CDMF_HTTP_CONTENT_VALIDATOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ContentInfo validate(Object msgPayload, Map<String, Object> dynamicParams) {
|
||||||
|
String deviceId = (String) dynamicParams.get("deviceId");
|
||||||
|
String msg = (String) msgPayload;
|
||||||
|
String deviceIdJsonPath = DEVICE_ID_JSON_PATH;
|
||||||
|
boolean status;
|
||||||
|
if (msg.startsWith(JSON_ARRAY_START_CHAR)) {
|
||||||
|
status = processMultipleEvents(msg, deviceId, deviceIdJsonPath);
|
||||||
|
} else {
|
||||||
|
status = processSingleEvent(msg, deviceId, deviceIdJsonPath);
|
||||||
|
}
|
||||||
|
return new ContentInfo(status, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean processSingleEvent(String msg, String deviceIdFromTopic, String deviceIdJsonPath) {
|
||||||
|
Object res = JsonPath.read(msg, deviceIdJsonPath);
|
||||||
|
String deviceIdFromContent = (res != null) ? res.toString() : "";
|
||||||
|
if (deviceIdFromContent.equals(deviceIdFromTopic)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean processMultipleEvents(String msg, String deviceIdFromTopic, String deviceIdJsonPath) {
|
||||||
|
try {
|
||||||
|
JSONParser jsonParser = new JSONParser();
|
||||||
|
JSONArray jsonArray = (JSONArray) jsonParser.parse(msg);
|
||||||
|
boolean status = false;
|
||||||
|
for (int i = 0; i < jsonArray.size(); i++) {
|
||||||
|
status = processSingleEvent(jsonArray.get(i).toString(), deviceIdFromTopic, deviceIdJsonPath);
|
||||||
|
if (!status) {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return status;
|
||||||
|
} catch (ParseException e) {
|
||||||
|
log.error("Invalid input " + msg, e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
18
components/extensions/cdmf-transport-adapters/input/org.wso2.carbon.device.mgt.input.adapter.mqtt/src/main/java/org/wso2/carbon/device/mgt/input/adapter/mqtt/util/MQTTContentValidator.java → components/extensions/cdmf-transport-adapters/input/org.wso2.carbon.device.mgt.input.adapter.extension/src/main/java/org/wso2/carbon/device/mgt/input/adapter/extension/validator/MQTTContentValidator.java
18
components/extensions/cdmf-transport-adapters/input/org.wso2.carbon.device.mgt.input.adapter.mqtt/src/main/java/org/wso2/carbon/device/mgt/input/adapter/mqtt/util/MQTTContentValidator.java → components/extensions/cdmf-transport-adapters/input/org.wso2.carbon.device.mgt.input.adapter.extension/src/main/java/org/wso2/carbon/device/mgt/input/adapter/extension/validator/MQTTContentValidator.java
@ -0,0 +1,147 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* you may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package org.wso2.carbon.device.mgt.input.adapter.http.authorization;
|
||||||
|
|
||||||
|
import feign.Client;
|
||||||
|
import feign.Feign;
|
||||||
|
import feign.FeignException;
|
||||||
|
import feign.Logger;
|
||||||
|
import feign.Request;
|
||||||
|
import feign.Response;
|
||||||
|
import feign.gson.GsonDecoder;
|
||||||
|
import feign.gson.GsonEncoder;
|
||||||
|
import feign.jaxrs.JAXRSContract;
|
||||||
|
import feign.slf4j.Slf4jLogger;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.http.authorization.client.OAuthRequestInterceptor;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.http.authorization.client.dto.AuthorizationRequest;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.http.authorization.client.dto.DeviceAccessAuthorizationAdminService;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.http.authorization.client.dto.DeviceAuthorizationResult;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.http.authorization.client.dto.DeviceIdentifier;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.http.util.AuthenticationInfo;
|
||||||
|
import org.wso2.carbon.device.mgt.input.adapter.http.util.PropertyUtils;
|
||||||
|
import org.wso2.carbon.event.input.adapter.core.exception.InputEventAdapterException;
|
||||||
|
|
||||||
|
import javax.net.ssl.HostnameVerifier;
|
||||||
|
import javax.net.ssl.SSLContext;
|
||||||
|
import javax.net.ssl.SSLSession;
|
||||||
|
import javax.net.ssl.SSLSocketFactory;
|
||||||
|
import javax.net.ssl.TrustManager;
|
||||||
|
import javax.net.ssl.X509TrustManager;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.security.KeyManagementException;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This authorizer crossvalidates the request with device id and device type.
|
||||||
|
*/
|
||||||
|
public class DeviceAuthorizer {
|
||||||
|
|
||||||
|
private static DeviceAccessAuthorizationAdminService deviceAccessAuthorizationAdminService;
|
||||||
|
private static final String CDMF_SERVER_BASE_CONTEXT = "/api/device-mgt/v1.0";
|
||||||
|
private static final String DEVICE_MGT_SERVER_URL = "deviceMgtServerUrl";
|
||||||
|
private static Log log = LogFactory.getLog(DeviceAuthorizer.class);
|
||||||
|
|
||||||
|
public DeviceAuthorizer(Map<String, String> globalProperties) {
|
||||||
|
try {
|
||||||
|
deviceAccessAuthorizationAdminService = Feign.builder().client(getSSLClient()).logger(new Slf4jLogger())
|
||||||
|
.logLevel(Logger.Level.FULL).requestInterceptor(new OAuthRequestInterceptor(globalProperties))
|
||||||
|
.contract(new JAXRSContract()).encoder(new GsonEncoder()).decoder(new GsonDecoder())
|
||||||
|
.target(DeviceAccessAuthorizationAdminService.class, getDeviceMgtServerUrl(globalProperties)
|
||||||
|
+ CDMF_SERVER_BASE_CONTEXT);
|
||||||
|
} catch (InputEventAdapterException e) {
|
||||||
|
log.error("Invalid value for deviceMgtServerUrl in globalProperties.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isAuthorized(AuthenticationInfo authenticationInfo, String deviceId, String deviceType) {
|
||||||
|
|
||||||
|
if (deviceId != null && !deviceId.isEmpty() && deviceType != null && !deviceType.isEmpty()) {
|
||||||
|
|
||||||
|
AuthorizationRequest authorizationRequest = new AuthorizationRequest();
|
||||||
|
authorizationRequest.setTenantDomain(authenticationInfo.getTenantDomain());
|
||||||
|
authorizationRequest.setUsername(authenticationInfo.getUsername());
|
||||||
|
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||||
|
deviceIdentifier.setId(deviceId);
|
||||||
|
deviceIdentifier.setType(deviceType);
|
||||||
|
List<DeviceIdentifier> deviceIdentifiers = new ArrayList<>();
|
||||||
|
deviceIdentifiers.add(deviceIdentifier);
|
||||||
|
authorizationRequest.setDeviceIdentifiers(deviceIdentifiers);
|
||||||
|
try {
|
||||||
|
DeviceAuthorizationResult deviceAuthorizationResult =
|
||||||
|
deviceAccessAuthorizationAdminService.isAuthorized(authorizationRequest);
|
||||||
|
List<DeviceIdentifier> devices = deviceAuthorizationResult.getAuthorizedDevices();
|
||||||
|
if (devices != null && devices.size() > 0) {
|
||||||
|
DeviceIdentifier authorizedDevice = devices.get(0);
|
||||||
|
if (authorizedDevice.getId().equals(deviceId) && authorizedDevice.getType().equals(deviceType)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (FeignException e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getDeviceMgtServerUrl(Map<String, String> properties) throws InputEventAdapterException {
|
||||||
|
String deviceMgtServerUrl = PropertyUtils.replaceProperty(properties.get(DEVICE_MGT_SERVER_URL));
|
||||||
|
if (deviceMgtServerUrl == null || deviceMgtServerUrl.isEmpty()) {
|
||||||
|
log.error("deviceMgtServerUrl can't be empty ");
|
||||||
|
}
|
||||||
|
return deviceMgtServerUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Client getSSLClient() {
|
||||||
|
return new Client.Default(getTrustedSSLSocketFactory(), new HostnameVerifier() {
|
||||||
|
@Override
|
||||||
|
public boolean verify(String s, SSLSession sslSession) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static SSLSocketFactory getTrustedSSLSocketFactory() {
|
||||||
|
try {
|
||||||
|
TrustManager[] trustAllCerts = new TrustManager[]{
|
||||||
|
new X509TrustManager() {
|
||||||
|
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public void checkClientTrusted(
|
||||||
|
java.security.cert.X509Certificate[] certs, String authType) {
|
||||||
|
}
|
||||||
|
public void checkServerTrusted(
|
||||||
|
java.security.cert.X509Certificate[] certs, String authType) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
SSLContext sc = SSLContext.getInstance("SSL");
|
||||||
|
sc.init(null, trustAllCerts, new java.security.SecureRandom());
|
||||||
|
return sc.getSocketFactory();
|
||||||
|
} catch (KeyManagementException | NoSuchAlgorithmException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue