diff --git a/packages/rocketchat-integrations/server/api/api.coffee b/packages/rocketchat-integrations/server/api/api.coffee index 49774f5c270..432a4c43547 100644 --- a/packages/rocketchat-integrations/server/api/api.coffee +++ b/packages/rocketchat-integrations/server/api/api.coffee @@ -167,7 +167,18 @@ executeIntegrationRest = -> username: @user.username try - result = script.process_incoming_request({ request: request }) + sandbox = + _: _ + s: s + console: console + Store: + set: (key, val) -> + return store[key] = val + get: (key) -> + return store[key] + script: script + request: request + result = vm.runInNewContext('script.process_incoming_request({ request: request })', sandbox, { timeout: 3000 }) if result?.error? return RocketChat.API.v1.failure result.error diff --git a/packages/rocketchat-integrations/server/triggers.coffee b/packages/rocketchat-integrations/server/triggers.coffee index 3835d5de61f..dbf7fcbc7f6 100644 --- a/packages/rocketchat-integrations/server/triggers.coffee +++ b/packages/rocketchat-integrations/server/triggers.coffee @@ -79,17 +79,36 @@ executeScript = (integration, method, params) -> return try - result = script[method](params) + sandbox = + _: _ + s: s + console: console + Store: + set: (key, val) -> + return store[key] = val + get: (key) -> + return store[key] + HTTP: (method, url, options) -> + try + return {} = + result: HTTP.call method, url, options + catch e + return {} = + error: e + script: script + method: method + params: params + result = vm.runInNewContext('script[method](params)', sandbox, { timeout: 3000 }) logger.outgoing.debug '[Script method [', method, '] result of Trigger', integration.name, ':]' logger.outgoing.debug result return result catch e - logger.incoming.error '[Error running Script in Trigger', integration.name, ':]' - logger.incoming.error integration.scriptCompiled.replace(/^/gm, ' ') - logger.incoming.error "[Stack:]" - logger.incoming.error e.stack.replace(/^/gm, ' ') + logger.outgoing.error '[Error running Script in Trigger', integration.name, ':]' + logger.outgoing.error integration.scriptCompiled.replace(/^/gm, ' ') + logger.outgoing.error "[Stack:]" + logger.outgoing.error e.stack.replace(/^/gm, ' ') return