forked from community/device-mgt-core
Merge branch 'master' of https://github.com/wso2/carbon-device-mgt
commit
d5950afe7a
19
components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/lifecycle/util/AnnotationUtil.java → components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/lifecycle/util/AnnotationProcessor.java
19
components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/lifecycle/util/AnnotationUtil.java → components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/lifecycle/util/AnnotationProcessor.java
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* 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.jaxrs;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
public class ApiOriginFilter implements Filter {
|
||||
|
||||
public void doFilter(ServletRequest request, ServletResponse response,
|
||||
FilterChain chain) throws IOException, ServletException {
|
||||
HttpServletResponse res = (HttpServletResponse) response;
|
||||
res.addHeader("Access-Control-Allow-Origin", "*");
|
||||
res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
|
||||
res.addHeader("Access-Control-Allow-Headers", "Content-Type");
|
||||
chain.doFilter(request, response);
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
}
|
@ -1,34 +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.jaxrs.api;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.Produces;
|
||||
|
||||
/**
|
||||
* Authentication related REST-API interface.
|
||||
*/
|
||||
@Api(value = "Authentication")
|
||||
@Produces({ "application/json", "application/xml" })
|
||||
@Consumes({ "application/json", "application/xml" })
|
||||
public interface Authentication {
|
||||
|
||||
}
|
@ -1,36 +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.jaxrs.api.impl;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.Produces;
|
||||
|
||||
/**
|
||||
* Authentication related REST-API implementation.
|
||||
*/
|
||||
@Produces({ "application/json", "application/xml" })
|
||||
@Consumes({ "application/json", "application/xml" })
|
||||
public class AuthenticationImpl {
|
||||
|
||||
private static Log log = LogFactory.getLog(AuthenticationImpl.class);
|
||||
}
|
||||
|
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* This class will read the configurations related to task. This task will be responsible for adding the operations.
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.config.deviceType;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement(name = "DTDepyloymentConfiguration")
|
||||
public class DTConfiguration {
|
||||
|
||||
private String dtHostAddress;
|
||||
private String dtHostPort;
|
||||
|
||||
@XmlElement(name = "DTHostAddress", required = true)
|
||||
public String getDtHostAddress() {
|
||||
return dtHostAddress;
|
||||
}
|
||||
|
||||
public void setDtHostAddress(String dtHostAddress) {
|
||||
this.dtHostAddress = dtHostAddress;
|
||||
}
|
||||
|
||||
@XmlElement(name = "DTHostPort", required = true)
|
||||
public String getDtHostPort() {
|
||||
return dtHostPort;
|
||||
}
|
||||
|
||||
public void setDtHostPort(String dtHostPort) {
|
||||
this.dtHostPort = dtHostPort;
|
||||
}
|
||||
|
||||
|
||||
}
|
28
components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/feature/mgt/util/AnnotationUtil.java → components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/feature/mgt/util/AnnotationProcessor.java
28
components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/feature/mgt/util/AnnotationUtil.java → components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/feature/mgt/util/AnnotationProcessor.java
@ -0,0 +1,38 @@
|
||||
<module name="utils" xmlns="http://wso2.org/projects/jaggery/module.xml">
|
||||
<script>
|
||||
<name>reflection</name>
|
||||
<path>scripts/reflection/reflection.js</path>
|
||||
</script>
|
||||
<script>
|
||||
<name>file</name>
|
||||
<path>scripts/file/file.js</path>
|
||||
</script>
|
||||
<script>
|
||||
<name>patterns</name>
|
||||
<path>scripts/patterns/patterns.js</path>
|
||||
</script>
|
||||
<script>
|
||||
<name>xml</name>
|
||||
<path>scripts/xml/xml.js</path>
|
||||
</script>
|
||||
<script>
|
||||
<name>request</name>
|
||||
<path>scripts/request/request.js</path>
|
||||
</script>
|
||||
<script>
|
||||
<name>response</name>
|
||||
<path>scripts/response/response.js</path>
|
||||
</script>
|
||||
<script>
|
||||
<name>time</name>
|
||||
<path>scripts/time/time.js</path>
|
||||
</script>
|
||||
<script>
|
||||
<name>url</name>
|
||||
<path>scripts/url/url.js</path>
|
||||
</script>
|
||||
<script>
|
||||
<name>exception</name>
|
||||
<path>scripts/exception/exception.js</path>
|
||||
</script>
|
||||
</module>
|
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright (c) WSO2 Inc. (http://wso2.com) 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Description: The response of the currently invoked api enpoint is organized
|
||||
*/
|
||||
|
||||
var exception = {};
|
||||
var log = new Log('exception_module');
|
||||
|
||||
(function(exception) {
|
||||
/**
|
||||
*
|
||||
* @param message The exception description
|
||||
* @param code HTTP STATUS CODE related to the exception
|
||||
* @return The error object
|
||||
*/
|
||||
exception.buildExceptionObject = function(message, code) {
|
||||
var error = {};
|
||||
error.message = message;
|
||||
error.code = code;
|
||||
return error;
|
||||
};
|
||||
|
||||
exception.handleError = function (exception, type, code){
|
||||
var constants = require('rxt').constants;
|
||||
|
||||
if (type == constants.THROW_EXCEPTION_TO_CLIENT) {
|
||||
log.debug(exception);
|
||||
var e = exceptionModule.buildExceptionObject(exception, code);
|
||||
throw e;
|
||||
} else if (type == constants.LOG_AND_THROW_EXCEPTION) {
|
||||
log.error(exception);
|
||||
throw exception;
|
||||
} else if (type == constants.LOG_EXCEPTION_AND_TERMINATE) {
|
||||
log.error(exception);
|
||||
var msg = 'An error occurred while serving the request!';
|
||||
var e = exceptionModule.buildExceptionObject(msg, constants.STATUS_CODES.INTERNAL_SERVER_ERROR);
|
||||
throw e;
|
||||
} else if (type == constants.LOG_EXCEPTION_AND_CONTINUE) {
|
||||
log.debug(exception);
|
||||
}
|
||||
else {
|
||||
log.error(exception);
|
||||
throw e;
|
||||
}
|
||||
};
|
||||
}(exception))
|
||||
|
@ -0,0 +1,167 @@
|
||||
/*
|
||||
* Copyright (c) 2005-2014, 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.
|
||||
*
|
||||
*/
|
||||
var file = {};
|
||||
(function() {
|
||||
var log = new Log('utils-file');
|
||||
var CONTENT_MAP = {
|
||||
'js': 'application/javascript',
|
||||
'css': 'text/css',
|
||||
'csv': 'text/csv',
|
||||
'html': 'text/html',
|
||||
'json': 'application/json',
|
||||
'png': 'image/png',
|
||||
'jpeg': 'image/jpeg',
|
||||
'gif': 'image/gif',
|
||||
'svg': 'image/svg+xml',
|
||||
'ttf': 'application/x-font-ttf',
|
||||
'eot': 'application/vnd.ms-fontobject',
|
||||
'woff': 'application/font-woff',
|
||||
'otf': 'application/x-font-otf',
|
||||
'zip': 'application/zip',
|
||||
'xml': 'text/xml',
|
||||
'xhtml': 'application/xhtml+xml',
|
||||
'pdf': 'application/pdf'
|
||||
};
|
||||
/**
|
||||
* The function checks whether a directory contains a particular file
|
||||
* @param dir The directory in which the file must be checked
|
||||
* @param file A File object if the file exists,else null
|
||||
*/
|
||||
file.getFileInDir = function(dir, fileName) {
|
||||
var isFilePresent = false;
|
||||
var files = dir.listFiles();
|
||||
for (var index in files) {
|
||||
if (files[index].getName() == fileName) {
|
||||
return files[index];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
/**
|
||||
* The function returns the file extension of a filename
|
||||
* @param file
|
||||
* @return: The extension of the file
|
||||
*/
|
||||
file.getExtension = function(file) {
|
||||
var baseFileName = file.getName();
|
||||
//Break up the name by .
|
||||
var baseNameComponents = baseFileName.split('.');
|
||||
var extension = baseNameComponents[baseNameComponents.length - 1];
|
||||
return extension;
|
||||
};
|
||||
/**
|
||||
* The function obtains the MIME type based on the extension
|
||||
* @param The extension
|
||||
* @return The mime type
|
||||
*/
|
||||
file.getMimeType = function(extension) {
|
||||
return CONTENT_MAP[extension];
|
||||
};
|
||||
/**
|
||||
* The function returns the name of the file without the file extension
|
||||
* @param file A file object
|
||||
* @return: The name of the file without the extension
|
||||
*/
|
||||
file.getFileName = function(file) {
|
||||
//Get the name of the file
|
||||
var baseFileName = file.getName();
|
||||
//Break up the name by .
|
||||
var baseNameComponents = baseFileName.split('.');
|
||||
//Get all of the components except the last one
|
||||
baseNameComponents.splice(baseNameComponents.length - 1, 1);
|
||||
return baseNameComponents.join('.');
|
||||
};
|
||||
/**
|
||||
* The function returns the contents of a directory as a JSON object.The name of the
|
||||
* file is used as the property names without the extensions.
|
||||
* NOTE: The method will not traverse sub folders.
|
||||
* @param The directory to be inspected
|
||||
* @return A JSON object which contains the files in the directory
|
||||
*/
|
||||
file.getDirectoryContents = function(dir) {
|
||||
var dirContents = {};
|
||||
//Check if it is a directory
|
||||
if (!dir.isDirectory()) {
|
||||
log.info('Not a directory');
|
||||
return dirContents;
|
||||
}
|
||||
//Obtain a list of all files
|
||||
var files = this.getAllFiles(dir);
|
||||
var name;
|
||||
log.info('Files: ' + files);
|
||||
//Create the directory object with each file been a property
|
||||
for (var index in files) {
|
||||
dirContents[this.getFileName(files[index])] = files[index];
|
||||
}
|
||||
return dirContents;
|
||||
};
|
||||
/**
|
||||
* The function obtains a list of files that are not directories
|
||||
* @param dir The directory to be inspected
|
||||
* @return An array with all of the files in the directory
|
||||
*/
|
||||
file.getAllFiles = function(dir) {
|
||||
var filesInDir = [];
|
||||
if (!dir.isDirectory()) {
|
||||
return filesInDir;
|
||||
}
|
||||
//Obtain a list of all files
|
||||
var files = dir.listFiles();
|
||||
for (var index in files) {
|
||||
log.info('Checking file: ' + files[index].getName());
|
||||
//Check if the file is a directory
|
||||
if (!files[index].isDirectory()) {
|
||||
filesInDir.push(files[index]);
|
||||
}
|
||||
}
|
||||
return filesInDir;
|
||||
};
|
||||
/**
|
||||
* The function returns a list of all file names in a directory
|
||||
* @param dir The directory to be inspected
|
||||
* @return {An array containing the name of all files in a directory
|
||||
*/
|
||||
file.getAllFileNames = function(dir) {
|
||||
var files = dir.listFiles();
|
||||
var list = [];
|
||||
var fileName;
|
||||
for (var index in files) {
|
||||
if (files[index].isDirectory()) {
|
||||
fileName=this.getFileName(files[index].getName());
|
||||
list.push(fileName);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
};
|
||||
/**
|
||||
* The function returns a list of all sub directories in a given directory
|
||||
* @param dir The root directory
|
||||
* @return: An array containing all sub directories
|
||||
*/
|
||||
file.getAllSubDirs = function(dir) {
|
||||
var files = dir.listFiles();
|
||||
var subDirs = [];
|
||||
for (var index in files) {
|
||||
if (files[index].isDirectory()) {
|
||||
subDirs.push(files[index]);
|
||||
}
|
||||
}
|
||||
return subDirs;
|
||||
};
|
||||
}());
|
@ -0,0 +1,128 @@
|
||||
/*
|
||||
* Copyright (c) 2005-2014, 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.
|
||||
*
|
||||
*/
|
||||
var patterns = {};
|
||||
|
||||
(function () {
|
||||
|
||||
var DEF_ERR_ARITY = 3;
|
||||
var DEF_HANDLE_ARITY = 2;
|
||||
var log = new Log('utils.patterns.GenericPipe');
|
||||
|
||||
function GenericPipe(options) {
|
||||
this.errHandlerArity = DEF_ERR_ARITY || options.errArity;
|
||||
this.handlerArity = DEF_HANDLE_ARITY || options.handlerArity;
|
||||
this.plugins = [];
|
||||
this.finalHandler = function () {
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*The function registers the provided plugin
|
||||
*/
|
||||
GenericPipe.prototype.plug = function (plugin, options) {
|
||||
var options = options || {};
|
||||
//Only a function
|
||||
if (plugin instanceof Function) {
|
||||
this.plugins.push({
|
||||
handle: plugin,
|
||||
options: options
|
||||
});
|
||||
}
|
||||
//Is it a plugin object
|
||||
else if (plugin instanceof Object) {
|
||||
plugin.options = options;
|
||||
this.plugins.push(plugin);
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
GenericPipe.prototype.finally = function (plugin) {
|
||||
this.finalHandler = plugin;
|
||||
return this;
|
||||
};
|
||||
|
||||
GenericPipe.prototype.resolve = function (data, req, res, session) {
|
||||
var context = {};
|
||||
context.req = req;
|
||||
context.res = res;
|
||||
context.session = session;
|
||||
context.data = data;
|
||||
handle(context, this.plugins, this.errHandlerArity, this.handlerArity, this.finalHandler);
|
||||
};
|
||||
|
||||
var handle = function (context, plugins, errArity, handlerArity, finallyHandler) {
|
||||
var index = 0;
|
||||
var currentPlugin;
|
||||
|
||||
var recursiveHandle = function (err) {
|
||||
|
||||
currentPlugin = plugins[index];
|
||||
|
||||
index++;
|
||||
|
||||
//Check if there is a plugin
|
||||
if (!currentPlugin) {
|
||||
//log.warn('No plugin found at index: ' + index);
|
||||
return;
|
||||
}
|
||||
|
||||
//Populate the options object for the plugin
|
||||
context.options=currentPlugin.options;;
|
||||
|
||||
//Check if an error has been provided
|
||||
if (err) {
|
||||
//Can the current plugin handle the err
|
||||
if (currentPlugin.handle.length == errArity) {
|
||||
try {
|
||||
currentPlugin.handle(err, context,recursiveHandle);
|
||||
}
|
||||
catch (e) {
|
||||
recursiveHandle(e);
|
||||
}
|
||||
}
|
||||
else {
|
||||
recursiveHandle(err);
|
||||
}
|
||||
}
|
||||
//There is no error so try to invoke the current plugin
|
||||
else {
|
||||
if (currentPlugin.handle.length == handlerArity) {
|
||||
try {
|
||||
|
||||
|
||||
currentPlugin.handle(context,recursiveHandle);
|
||||
} catch (e) {
|
||||
recursiveHandle(e);
|
||||
}
|
||||
}
|
||||
else {
|
||||
recursiveHandle();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
recursiveHandle();
|
||||
finallyHandler(context);
|
||||
};
|
||||
|
||||
patterns.GenericPipe = GenericPipe;
|
||||
|
||||
}());
|
@ -0,0 +1,230 @@
|
||||
/*
|
||||
* Copyright (c) 2005-2014, 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.
|
||||
*
|
||||
*/
|
||||
var reflection = {};
|
||||
/**
|
||||
* Description: The script encapsulates any reflection related utility functions
|
||||
*/
|
||||
(function() {
|
||||
var log = new Log('utils-reflection');
|
||||
reflection.copyPropKeys = function(from, to) {
|
||||
for (var key in from) {
|
||||
if (from.hasOwnProperty(key)) {
|
||||
to[key] = '';
|
||||
}
|
||||
}
|
||||
return to;
|
||||
};
|
||||
/**
|
||||
* The function recursively copies all property keys in an object
|
||||
* @param from
|
||||
* @param to
|
||||
*/
|
||||
reflection.copyAllPropKeys = function(from, to) {
|
||||
recurse(from, to, function(from, to, key) {
|
||||
if (from[key] instanceof Object) {
|
||||
to[key] = from[key];
|
||||
} else {
|
||||
to[key] = null;
|
||||
}
|
||||
});
|
||||
};
|
||||
reflection.copyAllPropValues = function(from, to) {
|
||||
recurse(from, to, function(from, to, key) {
|
||||
//Create an instance if the property does not exist
|
||||
if (!to[key]) {
|
||||
to[key] = {};
|
||||
}
|
||||
//Copy the values over
|
||||
if (!(from[key] instanceof Object)) {
|
||||
to[key] = from[key];
|
||||
} else {
|
||||
log.debug('Not copying values of key: ' + key);
|
||||
}
|
||||
});
|
||||
};
|
||||
/**
|
||||
* The function will only copy public properties
|
||||
* @param from
|
||||
* @param to
|
||||
*/
|
||||
reflection.copyPublicPropValues = function(from, to) {
|
||||
recurse(from, to, function(from, to, key) {
|
||||
//Ignore any hidden properties
|
||||
if (key.charAt(0) == '_') {
|
||||
log.warn('Drop key: ' + key);
|
||||
return;
|
||||
}
|
||||
//Create an instance if the property does not exist
|
||||
if (!to[key]) {
|
||||
to[key] = {};
|
||||
}
|
||||
//Copy the values over
|
||||
if (!(from[key] instanceof Object)) {
|
||||
to[key] = from[key];
|
||||
} else {
|
||||
log.warn('Not copying values of key: ' + key);
|
||||
}
|
||||
});
|
||||
};
|
||||
reflection.inspect = function(from, to, cb) {
|
||||
recurse(from, to, cb);
|
||||
};
|
||||
/**
|
||||
* The function recursively traverses an object and then invokes the provided
|
||||
* callback
|
||||
* @param root
|
||||
* @param clone
|
||||
* @param cb
|
||||
*/
|
||||
var recurse = function(root, clone, cb) {
|
||||
var key;
|
||||
//Check if the root is an object
|
||||
if (!(root instanceof Object)) {
|
||||
return;
|
||||
} else {
|
||||
var keys = Object.keys(root);
|
||||
//Go through all the other keys in the current root
|
||||
for (var index in keys) {
|
||||
key = keys[index];
|
||||
cb(root, clone, key);
|
||||
recurse(root[key], clone[key], cb);
|
||||
}
|
||||
}
|
||||
};
|
||||
reflection.copyProps = function(from, to) {
|
||||
for (var key in from) {
|
||||
if (from.hasOwnProperty(key)) {
|
||||
to[key] = from[key];
|
||||
}
|
||||
}
|
||||
return to;
|
||||
};
|
||||
reflection.getProps = function(obj) {
|
||||
var props = {};
|
||||
for (var key in obj) {
|
||||
if (!(obj[key] instanceof Function)) {
|
||||
props[key] = obj[key];
|
||||
}
|
||||
}
|
||||
return props;
|
||||
};
|
||||
reflection.printProps = function(obj) {
|
||||
for (var key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
log.info('key: ' + key);
|
||||
}
|
||||
}
|
||||
};
|
||||
/**
|
||||
* The function determines if a property is hidden based on _
|
||||
* @param key
|
||||
* @returns {boolean}
|
||||
*/
|
||||
reflection.isHiddenProp = function(key) {
|
||||
if (key == '') {
|
||||
return false;
|
||||
}
|
||||
return (key.charAt(0) == '_') ? true : false;
|
||||
};
|
||||
var getDiff = function(a, b, diff) {};
|
||||
/**
|
||||
* The function calculates the differences between two simple JSON objects
|
||||
* @param a The object with which b is compared
|
||||
* @param b The target of the comparison
|
||||
* @return An object which records the differences between the two objects
|
||||
*/
|
||||
reflection.diff = function(a, b) {};
|
||||
/**
|
||||
* The function merges the two provided objects to create a new
|
||||
* object.In the case where b has the same property as a; the property of b
|
||||
* will have precedence
|
||||
* @param {[type]} a [description]
|
||||
* @param {[type]} b [description]
|
||||
* @return A new object having the properties of both object a and b
|
||||
*/
|
||||
reflection.merge = function(a, b) {
|
||||
var newObj = {};
|
||||
//Copy the properties of a first
|
||||
for (var key in a) {
|
||||
newObj[key] = b[key];
|
||||
}
|
||||
//Override with the properties of b
|
||||
for (var key in b) {
|
||||
newObj[key] = b[key];
|
||||
}
|
||||
return newObj;
|
||||
};
|
||||
/**
|
||||
* The function allows a child class to override a select set of methods of
|
||||
* a parent class.The original methods of the parent can be accessed
|
||||
* using the this._super keyword
|
||||
* @param {[type]} parent The parent class instance to be overriden
|
||||
* @param {[type]} child The child class instance containing methods which will override the parent
|
||||
*/
|
||||
reflection.override = function(parent, child) {
|
||||
//Make a clone of the parent
|
||||
var super = parse(stringify(parent));
|
||||
for (var childKey in child) {
|
||||
for (var parentKey in parent) {
|
||||
//Only override those methods that are common
|
||||
if (childKey === parentKey) {
|
||||
var parentPtr = parent[parentKey];
|
||||
var childPtr = child[childKey];
|
||||
//Update the clone with the old parent method
|
||||
super[parentKey] = parentPtr;
|
||||
parent[parentKey] = childPtr;
|
||||
/*parent[parentKey] = function() {
|
||||
var result=childPtr.apply(this, arguments)||null;
|
||||
return result;
|
||||
};*/
|
||||
}
|
||||
}
|
||||
}
|
||||
//Allow the child object to call methods of the parent
|
||||
parent._super = super;
|
||||
};
|
||||
reflection.overrideAll=function(parent,child){
|
||||
//Make a clone of the parent
|
||||
var super = parse(stringify(parent));
|
||||
for (var childKey in child) {
|
||||
for (var parentKey in parent) {
|
||||
//Only override those methods that are common
|
||||
if ( (child.hasOwnProperty(childKey))&&(parent.hasOwnProperty(parentKey)) ) {
|
||||
var parentPtr = parent[parentKey];
|
||||
var childPtr = child[childKey];
|
||||
//Update the clone with the old parent method
|
||||
super[parentKey] = parentPtr;
|
||||
parent[parentKey] = childPtr;
|
||||
/*parent[parentKey] = function() {
|
||||
var result=childPtr.apply(this, arguments)||null;
|
||||
return result;
|
||||
};*/
|
||||
}
|
||||
}
|
||||
}
|
||||
//Allow the child object to call methods of the parent
|
||||
parent._super = super;
|
||||
};
|
||||
reflection.isArray = function(object) {
|
||||
if (Object.prototype.toString.call(object) === '[object Array]') {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
}());
|
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (c) 2005-2014, 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.
|
||||
*
|
||||
*/
|
||||
var request = {};
|
||||
(function(request) {
|
||||
var hasOwnProperty = function(obj, element) {
|
||||
return Object.prototype.hasOwnProperty.call(obj, element);
|
||||
};
|
||||
var isObject = function(object) {;
|
||||
return typeof object === 'object';
|
||||
};
|
||||
/*
|
||||
* ECMA Standard (ECMA-262 : 5.1 Edition)*/
|
||||
var decodes = function(encodedURI) {
|
||||
return decodeURIComponent(encodedURI);
|
||||
};
|
||||
request.getQueryOptions = function(queryString) {
|
||||
var opt={};
|
||||
var sep = opt.sep || '&',
|
||||
assign = opt.assign || '=',
|
||||
compoArray = [];
|
||||
var obj = {};
|
||||
var decodedURI = decodes(queryString);
|
||||
decodedURI.split(sep).forEach(function(comp) {
|
||||
comp.split(assign).some(function(element, index, array) {
|
||||
if (hasOwnProperty(obj, element.toString())) {
|
||||
compoArray.push(obj[element]);
|
||||
compoArray.push(array[1]);
|
||||
obj[element] = compoArray;
|
||||
} else {
|
||||
Object.defineProperty(obj, element, {
|
||||
enumerable: true,
|
||||
writable: true,
|
||||
value: array[1]
|
||||
});
|
||||
}
|
||||
return true;
|
||||
});
|
||||
});
|
||||
return obj;
|
||||
};
|
||||
}(request))
|
@ -0,0 +1,96 @@
|
||||
/*
|
||||
* Copyright (c) WSO2 Inc. (http://wso2.com) 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Description: The response of the currently invoked api endpoint is organized
|
||||
*/
|
||||
|
||||
var response = {};
|
||||
var log = new Log("response");
|
||||
|
||||
(function(response) {
|
||||
|
||||
/**
|
||||
* Build Error response
|
||||
* @param resp jaggery-response object to retrieve to client
|
||||
* @param code status code
|
||||
* @param message message to the client side
|
||||
* @return return response
|
||||
*/
|
||||
response.buildErrorResponse = function(resp,code,message) {
|
||||
var content={};
|
||||
content.error = message;
|
||||
resp = processResponse(resp,code,content);
|
||||
return resp;
|
||||
};
|
||||
|
||||
/**
|
||||
* Build success response
|
||||
* @param resp jaggery response object
|
||||
* @param code status code
|
||||
* @param data the result to client
|
||||
* @return return response
|
||||
*/
|
||||
response.buildSuccessResponse= function(resp, code, data){
|
||||
var content={};
|
||||
content.data = data;
|
||||
resp = processResponse(resp,code,content);
|
||||
return resp;
|
||||
};
|
||||
|
||||
/**
|
||||
* process General response
|
||||
* @param resp jaggery response
|
||||
* @param code status code
|
||||
* @param data success result
|
||||
* @return resp jaggery response
|
||||
*/
|
||||
response.buildSuccessResponseForRxt= function(resp, code, data){
|
||||
resp.status = code;
|
||||
resp.content = data;
|
||||
return resp;
|
||||
};
|
||||
|
||||
/**
|
||||
* General response builder
|
||||
* @param resp jaggery response
|
||||
* @param code status code
|
||||
* @param content what ever the content to be sent as response
|
||||
* @return resp jaggery response
|
||||
*/
|
||||
function processResponse(resp, code, content){
|
||||
resp.status = code;
|
||||
resp.contentType = 'application/json';
|
||||
resp.content = content;
|
||||
return resp;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param resp
|
||||
* @param code
|
||||
* @param data
|
||||
* @return The http response
|
||||
*/
|
||||
response.buildSuccessResponseForRxt= function(resp, code, data){
|
||||
resp.contentType = 'application/json';
|
||||
resp.status = code;
|
||||
resp.content = data;
|
||||
return resp;
|
||||
};
|
||||
|
||||
}(response))
|
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2005-2014, 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.
|
||||
*
|
||||
*/
|
||||
var time = {};
|
||||
(function(time) {
|
||||
time.getCurrentTime = function(dateLength) {
|
||||
var dateLength=dateLength||20;
|
||||
var now = new String(new Date().valueOf());
|
||||
var length = now.length;
|
||||
var prefix = dateLength;
|
||||
var onsetVal = '';
|
||||
if (length != prefix) {
|
||||
var onset = prefix - length;
|
||||
for (var i = 0; i < onset; i++) {
|
||||
onsetVal += '0';
|
||||
}
|
||||
}
|
||||
return onsetVal + now;
|
||||
};
|
||||
}(time));
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (c) 2005-2014, 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.
|
||||
*
|
||||
*/
|
||||
var url = {};
|
||||
(function() {
|
||||
var log=new Log('utils-url');
|
||||
url.popServerDetails = function(obj) {
|
||||
var process = require('process');
|
||||
var localIP = process.getProperty('server.host');
|
||||
var httpPort = process.getProperty('http.port');
|
||||
var httpsPort = process.getProperty('https.port');
|
||||
var value = '';
|
||||
var carbonLocalIP = process.getProperty('carbon.local.ip');
|
||||
|
||||
for (var key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
value = obj[key];
|
||||
if ((typeof value === 'string') && value.indexOf('%https.host%') > -1) {
|
||||
value=value.replace('%https.host%', 'https://' + localIP + ':' + httpsPort);
|
||||
} else if ((typeof value === 'string') && value.indexOf('%http.host%') > -1) {
|
||||
value=value.replace('%http.host%', 'http://' + localIP + ':' + httpPort);
|
||||
} else if ((typeof value === 'string') && value.indexOf('%https.carbon.local.ip%') > -1) {
|
||||
value=value.replace('%https.carbon.local.ip%', 'https://' + carbonLocalIP + ':' + httpsPort);
|
||||
} else if ((typeof value === 'string') && value.indexOf('%http.carbon.local.ip%') > -1) {
|
||||
value=value.replace('%http.carbon.local.ip%', 'http://' + carbonLocalIP + ':' + httpPort);
|
||||
}
|
||||
obj[key] = value;
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
}(url));
|
@ -0,0 +1,138 @@
|
||||
/*
|
||||
* Copyright (c) 2005-2014, 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.
|
||||
*
|
||||
*/
|
||||
var xml = {};
|
||||
|
||||
(function () {
|
||||
|
||||
var log=new Log('util.xml')
|
||||
|
||||
/*
|
||||
The method is used to create a JSON object using
|
||||
an xml object.
|
||||
@xmlElement: An xml element object to be processed
|
||||
@return: A pseudo object containing the properties of the
|
||||
xml element.
|
||||
*/
|
||||
var createJSONObject = function (xmlElement) {
|
||||
|
||||
var pseudo = {};
|
||||
|
||||
//Extract all attributes
|
||||
var attributes = xmlElement.@*;
|
||||
|
||||
//Fill the pseudo object with the attributes of the element
|
||||
for (var attributeKey in attributes) {
|
||||
var attribute = attributes[attributeKey];
|
||||
pseudo[attribute.localName()] = attribute.toString();
|
||||
}
|
||||
|
||||
return pseudo;
|
||||
};
|
||||
|
||||
/*
|
||||
The function converts an E4X Xml object to a JSON object
|
||||
This function has been adapted from the work of Oleg Podsechin available at
|
||||
https://gist.github.com/olegp/642667
|
||||
It uses a slightly modified version of his algorithm , therefore
|
||||
all credit should be attributed to Oleg Podsechin.
|
||||
IMPORTANT:
|
||||
1. It does not create a 1..1 mapping due to the differences
|
||||
between Xml and JSON.It is IMPORTANT that you verify the structure
|
||||
of the object generated before using it.
|
||||
2. The input xml object must not contain the xml header information
|
||||
This is a known bug 336551 (Mozilla Developer Network)
|
||||
Source: https://developer.mozilla.org/en/docs/E4X
|
||||
Please remove the header prior to sending the xml object for processing.
|
||||
@root: A starting element in an E4X Xml object
|
||||
@return: A JSON object mirroring the provided Xml object
|
||||
*/
|
||||
var recursiveConvertE4XtoJSON = function (root) {
|
||||
|
||||
log.debug('Root: ' + root.localName());
|
||||
|
||||
//Obtain child nodes
|
||||
var children = root.*;
|
||||
|
||||
//The number of children
|
||||
var numChildren = children.length();
|
||||
|
||||
//No children
|
||||
if (numChildren == 0) {
|
||||
|
||||
//Extract contents
|
||||
return createJSONObject(root);
|
||||
}
|
||||
else {
|
||||
|
||||
//Create an empty object
|
||||
var rootObject = createJSONObject(root);
|
||||
|
||||
//Could be multiple children
|
||||
for (var childElementKey in children) {
|
||||
|
||||
var child = children[childElementKey];
|
||||
|
||||
log.debug('Examining child: ' + child.localName());
|
||||
|
||||
//If the child just contains a single value then stop
|
||||
if (child.localName() == undefined) {
|
||||
|
||||
log.debug('Child is undefined: ' + child.toString());
|
||||
|
||||
//Change the object to just a key value pair
|
||||
rootObject[root.localName()] = child.toString();
|
||||
return rootObject;
|
||||
}
|
||||
|
||||
//Make a recursive call to construct the child element
|
||||
var createdObject = recursiveConvertE4XtoJSON(child);
|
||||
|
||||
log.debug('Converted object: ' + stringify(createdObject));
|
||||
|
||||
//Check if the root object has the property
|
||||
if (rootObject.hasOwnProperty(child.localName())) {
|
||||
|
||||
log.debug('key: ' + child.localName() + ' already present.');
|
||||
rootObject[child.localName()].push(createdObject);
|
||||
}
|
||||
else {
|
||||
|
||||
log.debug('key: ' + child.localName() + ' not present.');
|
||||
rootObject[child.localName()] = [];
|
||||
rootObject[child.localName()].push(createdObject);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
log.debug('root: ' + root.localName());
|
||||
|
||||
return rootObject;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* The function is used to convert an E4X xml to JSON
|
||||
* @param root
|
||||
*/
|
||||
xml.convertE4XtoJSON = function (root) {
|
||||
return recursiveConvertE4XtoJSON(root);
|
||||
};
|
||||
|
||||
|
||||
}());
|
@ -1,62 +0,0 @@
|
||||
<%
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
var uri = request.getRequestURI();
|
||||
var uriMatcher = new URIMatcher(String(uri));
|
||||
|
||||
var log = new Log("/api/operation-api.jag");
|
||||
|
||||
var utility = require('/app/modules/utility.js').utility;
|
||||
var constants = require('/app/modules/constants.js');
|
||||
var operationModule = require("/app/modules/operation.js").operationModule;
|
||||
|
||||
response.contentType = 'application/json';
|
||||
|
||||
var user = session.get(constants.USER_SESSION_KEY);
|
||||
|
||||
var result;
|
||||
|
||||
if (!user) {
|
||||
response.sendRedirect("/devicemgt/login?#login-required");
|
||||
exit();
|
||||
} else {
|
||||
if (uriMatcher.match("/{context}/api/operations/{deviceType}/stats")) {
|
||||
var deviceType = uriMatcher.elements().deviceType;
|
||||
var deviceId = request.getParameter("deviceId");
|
||||
var monitorOperations = operationModule.getMonitorOperations(deviceType);
|
||||
var stats = [];
|
||||
result = {};
|
||||
for (var op in monitorOperations) {
|
||||
result = operationModule.handleGETOperation(deviceType, monitorOperations[op].operation, monitorOperations[op].name, deviceId);
|
||||
stats.push(result.data);
|
||||
}
|
||||
result.data = stats;
|
||||
} else if (uriMatcher.match("/{context}/api/operations/{deviceType}/{operation}")) {
|
||||
var deviceType = uriMatcher.elements().deviceType;
|
||||
var operation = uriMatcher.elements().operation;
|
||||
var deviceId = request.getParameter("deviceId");
|
||||
var params = request.getAllParameters();
|
||||
result = operationModule.handlePOSTOperation(deviceType, operation, deviceId, params);
|
||||
}
|
||||
}
|
||||
|
||||
// returning the result.
|
||||
if (result) {
|
||||
print(result);
|
||||
}
|
||||
%>
|
@ -1,55 +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.
|
||||
*/
|
||||
|
||||
var uri = request.getRequestURI();
|
||||
var uriMatcher = new URIMatcher(String(uri));
|
||||
|
||||
var log = new Log("api/policy-api.jag");
|
||||
|
||||
var constants = require("/app/modules/constants.js");
|
||||
var policyModule = require("/app/modules/policy.js").policyModule;
|
||||
|
||||
var deviceType, deviceId;
|
||||
|
||||
var user = session.get(constants.USER_SESSION_KEY);
|
||||
|
||||
var responseProcessor = require('utils').response;
|
||||
response.contentType = 'application/json';
|
||||
|
||||
if (!user) {
|
||||
response = responseProcessor.buildErrorResponse(response, 401, "Unauthorized");
|
||||
} else {
|
||||
if (uriMatcher.match("/{context}/api/policies/add")) {
|
||||
var content = request.getContent();
|
||||
var policyName = content.policyName;
|
||||
var policyDefinition = content.profile.policyDefinition;
|
||||
var policyDescription = content.profile.policyDescription;
|
||||
deviceType = content.profile.deviceType.name;
|
||||
deviceId = content.deviceId;
|
||||
try {
|
||||
response.content = policyModule.addPolicy(policyName, deviceType, policyDefinition,
|
||||
policyDescription, deviceId);
|
||||
} catch (e) {
|
||||
log.error("Exception occurred while trying to add new policy under name:" + policyName, e);
|
||||
// http status code 500 refers to - Internal Server Error.
|
||||
responseProcessor.buildErrorResponse(response, 500, "Internal server error");
|
||||
}
|
||||
}
|
||||
}
|
||||
%>
|
@ -0,0 +1,120 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
$(document).ready(function () {
|
||||
|
||||
var configParams = {
|
||||
"NOTIFIER_TYPE": "notifierType",
|
||||
"NOTIFIER_FREQUENCY": "notifierFrequency"
|
||||
};
|
||||
|
||||
var responseCodes = {
|
||||
"CREATED": "Created",
|
||||
"SUCCESS": "201",
|
||||
"INTERNAL_SERVER_ERROR": "Internal Server Error"
|
||||
};
|
||||
|
||||
/**
|
||||
* Checks if provided input is valid against RegEx input.
|
||||
*
|
||||
* @param regExp Regular expression
|
||||
* @param inputString Input string to check
|
||||
* @returns {boolean} Returns true if input matches RegEx
|
||||
*/
|
||||
function isPositiveInteger(str) {
|
||||
return /^\+?(0|[1-9]\d*)$/.test(str);
|
||||
}
|
||||
|
||||
invokerUtil.get(
|
||||
"/devicemgt_admin/configuration",
|
||||
function (data) {
|
||||
data = JSON.parse(data);
|
||||
if (data && data.configuration) {
|
||||
for (var i = 0; i < data.configuration.length; i++) {
|
||||
var config = data.configuration[i];
|
||||
if (config.name == configParams["NOTIFIER_FREQUENCY"]) {
|
||||
$("input#monitoring-config-frequency").val(config.value / 1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
}, function (data) {
|
||||
console.log(data);
|
||||
});
|
||||
|
||||
/**
|
||||
* Following click function would execute
|
||||
* when a user clicks on "Save" button
|
||||
* on General platform configuration page in WSO2 EMM Console.
|
||||
*/
|
||||
$("button#save-general-btn").click(function () {
|
||||
var notifierFrequency = $("input#monitoring-config-frequency").val();
|
||||
var errorMsgWrapper = "#email-config-error-msg";
|
||||
var errorMsg = "#email-config-error-msg span";
|
||||
|
||||
if (!notifierFrequency) {
|
||||
$(errorMsg).text("Monitoring frequency is a required field. It cannot be empty.");
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
} else if (!isPositiveInteger(notifierFrequency)) {
|
||||
$(errorMsg).text("Provided monitoring frequency is invalid. ");
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
} else {
|
||||
var addConfigFormData = {};
|
||||
var configList = new Array();
|
||||
|
||||
var monitorFrequency = {
|
||||
"name": configParams["NOTIFIER_FREQUENCY"],
|
||||
"value": String((notifierFrequency * 1000)),
|
||||
"contentType": "text"
|
||||
};
|
||||
|
||||
configList.push(monitorFrequency);
|
||||
addConfigFormData.configuration = configList;
|
||||
|
||||
var addConfigAPI = "/devicemgt_admin/configuration";
|
||||
invokerUtil.post(
|
||||
addConfigAPI,
|
||||
addConfigFormData,
|
||||
function (data) {
|
||||
data = JSON.parse(data);
|
||||
if (data.statusCode == responseCodes["SUCCESS"]) {
|
||||
$("#config-save-form").addClass("hidden");
|
||||
$("#record-created-msg").removeClass("hidden");
|
||||
} else if (data == 500) {
|
||||
$(errorMsg).text("Exception occurred at backend.");
|
||||
} else if (data == 403) {
|
||||
$(errorMsg).text("Action was not permitted.");
|
||||
} else {
|
||||
$(errorMsg).text("An unexpected error occurred.");
|
||||
}
|
||||
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
}, function (data) {
|
||||
data = data.status;
|
||||
if (data == 500) {
|
||||
$(errorMsg).text("Exception occurred at backend.");
|
||||
} else if (data == 403) {
|
||||
$(errorMsg).text("Action was not permitted.");
|
||||
} else {
|
||||
$(errorMsg).text("An unexpected error occurred.");
|
||||
}
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
@ -1,72 +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.
|
||||
*#
|
||||
<EmailConfig>
|
||||
<Subject>You have been invited to enroll your device in WSO2 EMM</Subject>
|
||||
<Body>
|
||||
<![CDATA[
|
||||
<html>
|
||||
<head>
|
||||
<title>WSO2 Enterprise Mobility Manager</title>
|
||||
</head>
|
||||
<body style="color: #666666; background-color:#cdcdcd; padding: 0px; margin: 0px;">
|
||||
<div style="background-color:#cdcdcd; font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; padding: 20px 0px; margin: 0px;">
|
||||
<div style="width: 86%; max-width: 650px; padding: 2%; background-color: #ffffff; margin: auto; border-radius: 14px;">
|
||||
<div style="background-color: #49c8f5; line-height: 0px; border-top-left-radius: 10px; border-top-right-radius: 10px; padding: 0px 10px 0px 0px;">
|
||||
<div style="display: inline-block; line-height: 0px;">
|
||||
<img src="http://b.content.wso2.com/sites/all/2015-june-theme/navigation/wso2-nav-logo.png"
|
||||
alt="WSO2" style="margin: 0px 20px 0px 25px; width: 100%; max-width: 251px;"/>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color: #ffffff; line-height: 170%; color: #666666; padding: 20px 25px;">
|
||||
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px 20px;">
|
||||
Hi $first-name,
|
||||
</p>
|
||||
|
||||
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
|
||||
You have been invited to enrol your device in WSO2 Enterprise Mobility Manager.
|
||||
Click <a href="$base-url-https/emm-web-agent/enrollment">here</a> to download the WSO2 EMM client application to begin device
|
||||
enrolment.</p>
|
||||
|
||||
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
|
||||
Should you need assistance, please contact your administrator.
|
||||
</p>
|
||||
|
||||
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 20px 0px 5px;">
|
||||
Regards,
|
||||
</p>
|
||||
|
||||
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
|
||||
WSO2 EMM Administrator
|
||||
</p>
|
||||
</div>
|
||||
<div style="background-color: #333333; border-bottom-left-radius: 10px; border-bottom-right-radius: 10px;">
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||
<tr>
|
||||
<td style="padding: 0px 20px 0px 0px;"><img
|
||||
src="http://b.content.wso2.com/newsletter/images/wso2-logo-cloud-footer.png" alt="WSO2"
|
||||
style="margin: 15px 0px 15px 25px; width: 100%; max-width: 258px;"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
]]>
|
||||
</Body>
|
||||
</EmailConfig>
|
@ -1,82 +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.
|
||||
*#
|
||||
<EmailConfig>
|
||||
<Subject>You have successfully been registered in WSO2 EMM</Subject>
|
||||
<Body>
|
||||
<![CDATA[
|
||||
<html>
|
||||
<head>
|
||||
<title>WSO2 Enterprise Mobility Manager</title>
|
||||
</head>
|
||||
<body style="color: #666666; background-color:#cdcdcd; padding: 0px; margin: 0px;">
|
||||
<div style="background-color:#cdcdcd; font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; padding: 20px 0px; margin: 0px;">
|
||||
<div style="width: 86%; max-width: 650px; padding: 2%; background-color: #ffffff; margin: auto; border-radius: 14px;">
|
||||
<div style="background-color: #49c8f5; line-height: 0px; border-top-left-radius: 10px; border-top-right-radius: 10px; padding: 0px 10px 0px 0px;">
|
||||
<div style="display: inline-block; line-height: 0px;">
|
||||
<img src="http://b.content.wso2.com/sites/all/2015-june-theme/navigation/wso2-nav-logo.png"
|
||||
alt="WSO2" style="margin: 0px 20px 0px 25px; width: 100%; max-width: 251px;"/>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background-color: #ffffff; line-height: 170%; color: #666666; padding: 20px 25px;">
|
||||
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px 20px;">
|
||||
Hi $first-name,
|
||||
</p>
|
||||
|
||||
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
|
||||
You have been registered in WSO2 Enterprise Mobility Manager and invited to enrol your device.
|
||||
Click <a href="$base-url-https/emm-web-agent/enrollment">here</a> to download the WSO2 EMM client application to begin device
|
||||
enrolment.</p>
|
||||
|
||||
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
|
||||
Use following credentials to log in to WSO2 EMM client application.
|
||||
</p>
|
||||
|
||||
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
|
||||
<b>Username:</b> $username
|
||||
<br/>
|
||||
<b>Password:</b> $password
|
||||
</p>
|
||||
|
||||
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
|
||||
Should you need assistance, please contact your administrator.
|
||||
</p>
|
||||
|
||||
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 20px 0px 5px;">
|
||||
Regards,
|
||||
</p>
|
||||
|
||||
<p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
|
||||
WSO2 EMM Administrator
|
||||
</p>
|
||||
</div>
|
||||
<div style="background-color: #333333; border-bottom-left-radius: 10px; border-bottom-right-radius: 10px;">
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||
<tr>
|
||||
<td style="padding: 0px 20px 0px 0px;"><img
|
||||
src="http://b.content.wso2.com/newsletter/images/wso2-logo-cloud-footer.png" alt="WSO2"
|
||||
style="margin: 15px 0px 15px 25px; width: 100%; max-width: 258px;"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
]]>
|
||||
</Body>
|
||||
</EmailConfig>
|
@ -1,3 +1,4 @@
|
||||
instructions.configure = \
|
||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt-cdmf);\
|
||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.ui_${feature.version}/jaggeryapps/devicemgt-cdmf,target:${installFolder}/../../deployment/server/jaggeryapps/devicemgt-cdmf,overwrite:true);\
|
||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.ui_${feature.version}/jaggeryapps/devicemgt-cdmf,target:${installFolder}/../../deployment/server/jaggeryapps/devicemgt-cdmf,overwrite:true);\
|
||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.ui_${feature.version}/jaggery-modules/utils/,target:${installFolder}/../../modules/utils,overwrite:true);\
|
Loading…
Reference in new issue