diff --git a/src/fireedge/src/server/routes/api/oneflow/index.js b/src/fireedge/src/server/routes/api/oneflow/index.js index 42b25e6733..9be0eaa0bb 100644 --- a/src/fireedge/src/server/routes/api/oneflow/index.js +++ b/src/fireedge/src/server/routes/api/oneflow/index.js @@ -13,27 +13,22 @@ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -const { main: service, routes: serviceRoutes } = require('./service') -const { main: serviceTemplate, routes: serviceTemplateRoutes } = require('./service_template') +const { addFunctionToRoute, fillFunctionRoute } = require('server/utils/server') +const { routes: serviceRoutes } = require('./service') +const { routes: serviceTemplateRoutes } = require('./service_template') const { SERVICE, SERVICE_TEMPLATE } = require('./string-routes') const privateRoutes = [] const publicRoutes = [] -const fillRoute = (method, endpoint, action) => ({ - httpMethod: method, - endpoint, - action -}) - const fillPrivateRoutes = (methods = {}, path = '', action = () => undefined) => { if (Object.keys(methods).length > 0 && methods.constructor === Object) { Object.keys(methods).forEach((method) => { privateRoutes.push( - fillRoute(method, path, + fillFunctionRoute(method, path, (req, res, next, connection, userId, user) => { - action(req, res, next, methods[method], user) + action(req, res, next, methods[method], user, connection) }) ) }) @@ -41,8 +36,8 @@ const fillPrivateRoutes = (methods = {}, path = '', action = () => undefined) => } const generatePrivateRoutes = () => { - fillPrivateRoutes(serviceRoutes, SERVICE, service) - fillPrivateRoutes(serviceTemplateRoutes, SERVICE_TEMPLATE, serviceTemplate) + fillPrivateRoutes(serviceRoutes, SERVICE, addFunctionToRoute) + fillPrivateRoutes(serviceTemplateRoutes, SERVICE_TEMPLATE, addFunctionToRoute) return privateRoutes } diff --git a/src/fireedge/src/server/routes/api/oneflow/service.js b/src/fireedge/src/server/routes/api/oneflow/service.js index c5cec4662d..3ec3a08446 100644 --- a/src/fireedge/src/server/routes/api/oneflow/service.js +++ b/src/fireedge/src/server/routes/api/oneflow/service.js @@ -64,31 +64,8 @@ const routes = { } } } -const main = (req = {}, res = {}, next = () => undefined, routes = {}, user = {}, index = 0) => { - const resources = Object.keys(req[fromData.resource]) - if (req && res && next && routes) { - const route = routes[`${req[fromData.resource][resources[index]]}`.toLowerCase()] - if (req && fromData && fromData.resource && req[fromData.resource] && route) { - if (Object.keys(route).length > 0 && route.constructor === Object) { - if (route.action && route.params && typeof route.action === 'function') { - const params = getParamsForObject(route.params, req) - route.action(res, next, params, user) - } else { - main(req, res, next, route, user, index + 1) - } - } else { - next() - } - } else { - next() - } - } else { - next() - } -} const serviceApi = { - main, routes } diff --git a/src/fireedge/src/server/routes/api/oneflow/service_template.js b/src/fireedge/src/server/routes/api/oneflow/service_template.js index 937700339f..be374a1291 100644 --- a/src/fireedge/src/server/routes/api/oneflow/service_template.js +++ b/src/fireedge/src/server/routes/api/oneflow/service_template.js @@ -14,7 +14,6 @@ /* -------------------------------------------------------------------------- */ const { httpMethod, from: fromData } = require('server/utils/constants/defaults') -const { getParamsForObject } = require('server/utils/server') const { serviceTemplate, serviceTemplateDelete, @@ -67,31 +66,7 @@ const routes = { } } -const main = (req = {}, res = {}, next = () => undefined, routes = {}, user = {}, index = 0) => { - const resources = Object.keys(req[fromData.resource]) - if (req && res && next && routes) { - const route = routes[`${req[fromData.resource][resources[index]]}`.toLowerCase()] - if (req && fromData && fromData.resource && req[fromData.resource] && route) { - if (Object.keys(route).length > 0 && route.constructor === Object) { - if (route.action && route.params && typeof route.action === 'function') { - const params = getParamsForObject(route.params, req) - route.action(res, next, params, user) - } else { - main(req, res, next, route, user, index + 1) - } - } else { - next() - } - } else { - next() - } - } else { - next() - } -} - const serviceTemplateApi = { - main, routes } diff --git a/src/fireedge/src/server/routes/api/provision/index.js b/src/fireedge/src/server/routes/api/provision/index.js index e7e7386ee9..db41613347 100644 --- a/src/fireedge/src/server/routes/api/provision/index.js +++ b/src/fireedge/src/server/routes/api/provision/index.js @@ -12,26 +12,21 @@ /* See the License for the specific language governing permissions and */ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -const { main: provision, routes: provisionRoutes } = require('./provision') -const { main: provisionTemplate, routes: provisionTemplateRoutes } = require('./provision_template') -const { main: provider, routes: providerRoutes } = require('./provider') +const { addFunctionToRoute, fillFunctionRoute } = require('server/utils/server') +const { routes: provisionRoutes } = require('./provision') +const { routes: provisionTemplateRoutes } = require('./provision_template') +const { routes: providerRoutes } = require('./provider') const { PROVIDER, PROVISION, PROVISION_TEMPLATE } = require('./string-routes') const privateRoutes = [] const publicRoutes = [] -const fillRoute = (method, endpoint, action) => ({ - httpMethod: method, - endpoint, - action -}) - const fillPrivateRoutes = (methods = {}, path = '', action = () => undefined) => { if (Object.keys(methods).length > 0 && methods.constructor === Object) { Object.keys(methods).forEach((method) => { privateRoutes.push( - fillRoute(method, path, + fillFunctionRoute(method, path, (req, res, next, connection, userId, user) => { action(req, res, next, methods[method], user, connection) }) @@ -41,9 +36,9 @@ const fillPrivateRoutes = (methods = {}, path = '', action = () => undefined) => } const generatePrivateRoutes = () => { - fillPrivateRoutes(provisionRoutes, PROVISION, provision) - fillPrivateRoutes(provisionTemplateRoutes, PROVISION_TEMPLATE, provisionTemplate) - fillPrivateRoutes(providerRoutes, PROVIDER, provider) + fillPrivateRoutes(provisionRoutes, PROVISION, addFunctionToRoute) + fillPrivateRoutes(provisionTemplateRoutes, PROVISION_TEMPLATE, addFunctionToRoute) + fillPrivateRoutes(providerRoutes, PROVIDER, addFunctionToRoute) return privateRoutes } diff --git a/src/fireedge/src/server/routes/api/provision/provider.js b/src/fireedge/src/server/routes/api/provision/provider.js index 8e7cf83fb7..299c2d4c61 100644 --- a/src/fireedge/src/server/routes/api/provision/provider.js +++ b/src/fireedge/src/server/routes/api/provision/provider.js @@ -67,31 +67,7 @@ const routes = { } } -const main = (req = {}, res = {}, next = () => undefined, routes = {}, user = {}, oneConnection = defaultEmptyFunction, index = 0) => { - const resources = Object.keys(req[fromData.resource]) - if (req && res && next && routes) { - const route = routes[`${req[fromData.resource][resources[index]]}`.toLowerCase()] - if (req && fromData && fromData.resource && req[fromData.resource] && route) { - if (Object.keys(route).length > 0 && route.constructor === Object) { - if (route.action && route.params && typeof route.action === 'function') { - const params = getParamsForObject(route.params, req) - route.action(res, next, params, user) - } else { - main(req, res, next, route, user, index + 1) - } - } else { - next() - } - } else { - next() - } - } else { - next() - } -} - const providerApi = { - main, routes } module.exports = providerApi diff --git a/src/fireedge/src/server/routes/api/provision/provision.js b/src/fireedge/src/server/routes/api/provision/provision.js index 4b77fa1bf9..0888d98dd9 100644 --- a/src/fireedge/src/server/routes/api/provision/provision.js +++ b/src/fireedge/src/server/routes/api/provision/provision.js @@ -12,8 +12,7 @@ /* See the License for the specific language governing permissions and */ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -const { httpMethod, from: fromData, defaultEmptyFunction } = require('server/utils/constants/defaults') -const { getParamsForObject } = require('server/utils/server') +const { httpMethod, from: fromData } = require('server/utils/constants/defaults') const { getList, getListProvisions, @@ -219,31 +218,7 @@ const routes = { } } -const main = (req = {}, res = {}, next = defaultEmptyFunction, routes = {}, user = {}, oneConnection = defaultEmptyFunction, index = 0) => { - const resources = Object.keys(req[fromData.resource]) - if (req && res && next && routes) { - const route = routes[`${req[fromData.resource][resources[index]]}`.toLowerCase()] - if (req && fromData && fromData.resource && req[fromData.resource] && route) { - if (Object.keys(route).length > 0 && route.constructor === Object) { - if (route.action && route.params && typeof route.action === 'function') { - const params = getParamsForObject(route.params, req) - route.action(res, next, params, user, oneConnection) - } else { - main(req, res, next, route, user, oneConnection, index + 1) - } - } else { - next() - } - } else { - next() - } - } else { - next() - } -} - const provisionApi = { - main, routes } module.exports = provisionApi diff --git a/src/fireedge/src/server/routes/api/provision/provision_template.js b/src/fireedge/src/server/routes/api/provision/provision_template.js index 463f167167..b2d46b085e 100644 --- a/src/fireedge/src/server/routes/api/provision/provision_template.js +++ b/src/fireedge/src/server/routes/api/provision/provision_template.js @@ -12,8 +12,7 @@ /* See the License for the specific language governing permissions and */ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -const { from: fromData, defaultEmptyFunction } = require('server/utils/constants/defaults') -const { getParamsForObject } = require('server/utils/server') +const { from: fromData } = require('server/utils/constants/defaults') const { getListProvisionTemplates, createProvisionTemplate, @@ -67,31 +66,7 @@ const routes = { } } -const main = (req = {}, res = {}, next = defaultEmptyFunction, routes = {}, user = {}, oneConnection = defaultEmptyFunction, index = 0) => { - const resources = Object.keys(req[fromData.resource]) - if (req && res && next && routes) { - const route = routes[`${req[fromData.resource][resources[index]]}`.toLowerCase()] - if (req && fromData && fromData.resource && req[fromData.resource] && route) { - if (Object.keys(route).length > 0 && route.constructor === Object) { - if (route.action && route.params && typeof route.action === 'function') { - const params = getParamsForObject(route.params, req) - route.action(res, next, params, user) - } else { - main(req, res, next, route, user, index + 1) - } - } else { - next() - } - } else { - next() - } - } else { - next() - } -} - const provisionTemplateApi = { - main, routes } module.exports = provisionTemplateApi diff --git a/src/fireedge/src/server/routes/api/sunstone/index.js b/src/fireedge/src/server/routes/api/sunstone/index.js index f7cbcec73d..adf602c895 100644 --- a/src/fireedge/src/server/routes/api/sunstone/index.js +++ b/src/fireedge/src/server/routes/api/sunstone/index.js @@ -12,25 +12,19 @@ /* See the License for the specific language governing permissions and */ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ - -const { main: sunstone, routes: sunstoneRoutes } = require('./sunstone') +const { addFunctionToRoute, fillFunctionRoute } = require('server/utils/server') +const { routes: sunstoneRoutes } = require('./sunstone') const { SUNSTONE } = require('./string-routes') const privateRoutes = [] const publicRoutes = [] -const fillRoute = (method, endpoint, action) => ({ - httpMethod: method, - endpoint, - action -}) - const fillPrivateRoutes = (methods = {}, path = '', action = () => undefined) => { if (Object.keys(methods).length > 0 && methods.constructor === Object) { Object.keys(methods).forEach((method) => { privateRoutes.push( - fillRoute(method, path, + fillFunctionRoute(method, path, (req, res, next, connection, userId, user) => { action(req, res, next, methods[method], user, connection) }) @@ -40,7 +34,7 @@ const fillPrivateRoutes = (methods = {}, path = '', action = () => undefined) => } const generatePrivateRoutes = () => { - fillPrivateRoutes(sunstoneRoutes, SUNSTONE, sunstone) + fillPrivateRoutes(sunstoneRoutes, SUNSTONE, addFunctionToRoute) return privateRoutes } diff --git a/src/fireedge/src/server/routes/api/sunstone/sunstone-functions.js b/src/fireedge/src/server/routes/api/sunstone/sunstone-functions.js index 979c85ded8..2c1653defa 100644 --- a/src/fireedge/src/server/routes/api/sunstone/sunstone-functions.js +++ b/src/fireedge/src/server/routes/api/sunstone/sunstone-functions.js @@ -47,39 +47,39 @@ const getViews = (res = {}, next = () => undefined, params = {}, userData = {}, const { user, password } = userData if (user && password && global && global.SUNSTONE_VIEWS && global.SUNSTONE_PATH) { const connect = oneConnection(user, password) - // get user data connect( ActionsUser.USER_INFO, [-1, false], (err = {}, userData = {}) => { if (userData && userData.USER && userData.USER.GID) { - // get group data for user getInfoZone( connect, userData.USER.GID, (err = {}, vmgroupData = {}) => { if (vmgroupData && vmgroupData.GROUP && vmgroupData.GROUP.NAME) { - // get info for file sunstone-views.yamls existsFile( global.SUNSTONE_VIEWS, filedata => { const jsonFileData = parse(filedata) || {} if (jsonFileData && jsonFileData.groups && jsonFileData.default) { - // get info for views const views = jsonFileData.groups[vmgroupData.GROUP.NAME] || jsonFileData.default const rtn = {} views.forEach(view => { - // aca se tiene que ir armando la respuesta del http + console.log('-->', getFiles( + `${global.SUNSTONE_PATH}${view}` + )) getFiles( `${global.SUNSTONE_PATH}${view}` ).forEach(viewPath => { existsFile( viewPath, (viewData = '') => { - // get file content of view + if (!rtn[view]) { + rtn[view] = [] + } const jsonViewData = parse(viewData) || {} if (jsonViewData && jsonViewData.resource_name) { - rtn[view] = jsonViewData + rtn[view].push(jsonViewData) } } ) @@ -114,6 +114,7 @@ const getViews = (res = {}, next = () => undefined, params = {}, userData = {}, const getConfig = (res = {}, next = () => undefined, params = {}, userData = {}) => { if (global && global.SUNSTONE_CONFIG) { + console.log('asdasd: ', global.SUNSTONE_CONFIG) existsFile( global.SUNSTONE_CONFIG, filedata => { diff --git a/src/fireedge/src/server/routes/api/sunstone/sunstone.js b/src/fireedge/src/server/routes/api/sunstone/sunstone.js index e608f8554d..1de3dc4ef4 100644 --- a/src/fireedge/src/server/routes/api/sunstone/sunstone.js +++ b/src/fireedge/src/server/routes/api/sunstone/sunstone.js @@ -12,9 +12,7 @@ /* See the License for the specific language governing permissions and */ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -const { defaultEmptyFunction } = require('server/utils/constants/defaults') -const { httpMethod, from: fromData } = require('server/utils/constants/defaults') -const { getParamsForObject } = require('server/utils/server') +const { httpMethod } = require('server/utils/constants/defaults') const { getConfig, getViews @@ -33,31 +31,8 @@ const routes = { } } } -const main = (req = {}, res = {}, next = defaultEmptyFunction, routes = {}, user = {}, oneConnection = defaultEmptyFunction, index = 0) => { - const resources = Object.keys(req[fromData.resource]) - if (req && res && next && routes) { - const route = routes[`${req[fromData.resource][resources[index]]}`.toLowerCase()] - if (req && fromData && fromData.resource && req[fromData.resource] && route) { - if (Object.keys(route).length > 0 && route.constructor === Object) { - if (route.action && route.params && typeof route.action === 'function') { - const params = getParamsForObject(route.params, req) - route.action(res, next, params, user, oneConnection) - } else { - main(req, res, next, route, user, oneConnection, index + 1) - } - } else { - next() - } - } else { - next() - } - } else { - next() - } -} const sunstoneApi = { - main, routes } diff --git a/src/fireedge/src/server/routes/websockets/guacamole/index.js b/src/fireedge/src/server/routes/websockets/guacamole/index.js index 3b12c6e61e..fc07182852 100644 --- a/src/fireedge/src/server/routes/websockets/guacamole/index.js +++ b/src/fireedge/src/server/routes/websockets/guacamole/index.js @@ -56,7 +56,7 @@ const clientCallbacks = { const appConfig = getConfig() const guacd = appConfig.guacd || {} const guacdPort = guacd.port || 4822 -const guacdHost = guacd.host || '127.0.0.1' +const guacdHost = guacd.host || 'localhost' const guacamole = appServer => { if ( diff --git a/src/fireedge/src/server/utils/server.js b/src/fireedge/src/server/utils/server.js index a8d9dbc123..2f68b563a6 100644 --- a/src/fireedge/src/server/utils/server.js +++ b/src/fireedge/src/server/utils/server.js @@ -23,6 +23,7 @@ const { internalServerError } = require('./constants/http-codes') const { messageTerminal } = require('server/utils/general') const { validateAuth } = require('server/utils/jwt') const { + from: fromData, defaultAppName, defaultConfigFile, defaultLogFilename, @@ -39,12 +40,42 @@ const { defaultHash, defaultSunstonePath, defaultSunstoneViews, - defaultSunstoneConfig + defaultSunstoneConfig, + defaultEmptyFunction } = require('./constants/defaults') let cert = '' let key = '' +const fillFunctionRoute = (method, endpoint, action) => ({ + httpMethod: method, + endpoint, + action +}) + +const addFunctionToRoute = (req = {}, res = {}, next = defaultEmptyFunction, routes = {}, user = {}, oneConnection = defaultEmptyFunction, index = 0) => { + const resources = Object.keys(req[fromData.resource]) + if (req && res && next && routes) { + const route = routes[`${req[fromData.resource][resources[index]]}`.toLowerCase()] + if (req && fromData && fromData.resource && req[fromData.resource] && route) { + if (Object.keys(route).length > 0 && route.constructor === Object) { + if (route.action && route.params && typeof route.action === 'function') { + const params = getParamsForObject(route.params, req) + route.action(res, next, params, user, oneConnection) + } else { + addFunctionToRoute(req, res, next, route, user, oneConnection, index + 1) + } + } else { + next() + } + } else { + next() + } + } else { + next() + } +} + const validateServerIsSecure = () => { const folder = '../cert/' const pathfile = env && env.NODE_ENV === defaultWebpackMode ? `${__dirname}/../../${folder}` : `${__dirname}/${folder}` @@ -172,8 +203,8 @@ const existsFile = (path = '', success = () => undefined, error = () => undefine let errorData try { const fileData = readFileSync(path, 'utf8') - if (path && fileData) { - file = fileData + if (path) { + file = fileData || '' rtn = true } } catch (err) { @@ -409,6 +440,8 @@ const parsePostData = (postData = {}) => { return rtn } module.exports = { + fillFunctionRoute, + addFunctionToRoute, encrypt, decrypt, getDataZone,