diff --git a/deploy/docker-compose/docker-compose.yml b/deploy/docker-compose/docker-compose.yml index 9001962e6e..207081c8ff 100644 --- a/deploy/docker-compose/docker-compose.yml +++ b/deploy/docker-compose/docker-compose.yml @@ -5,9 +5,11 @@ services: ports: - '80:80' - '443:443' + environment: + NGINX_WEBHOOK_SYNC_TIMEOUT: '${OPS_FLOW_TIMEOUT_SECONDS:-600}s' volumes: - ./${OPS_NGINX_CONFIG_FILE:-nginx.gateway.conf}:/etc/nginx/conf.d/default.conf - - ./nginx.gateway.routing.conf:/etc/nginx/includes/routing.conf + - ./nginx.gateway.routing.template:/etc/nginx/templates/gateway.routing.template - ./tls:/etc/nginx/tls depends_on: openops-tables: @@ -36,7 +38,7 @@ services: image: public.ecr.aws/openops/openops-engine:${OPS_VERSION:-latest} restart: unless-stopped env_file: .env - command: ["cp -r /var/tmp-base/. /tmp/ && node main.js; exit $?"] + command: ['cp -r /var/tmp-base/. /tmp/ && node main.js; exit $?'] environment: OPS_BASE_CODE_DIRECTORY: /tmp/codes OPS_COMPONENT: engine @@ -137,7 +139,7 @@ services: volumes: - 'redis_data:/data' healthcheck: - test: [ 'CMD', 'redis-cli', 'ping' ] + test: ['CMD', 'redis-cli', 'ping'] interval: 5s timeout: 3s retries: 3 diff --git a/deploy/docker-compose/nginx.gateway.conf b/deploy/docker-compose/nginx.gateway.conf index 560e82882e..fd7567c7a4 100644 --- a/deploy/docker-compose/nginx.gateway.conf +++ b/deploy/docker-compose/nginx.gateway.conf @@ -3,5 +3,5 @@ server { server_name openops; - include includes/routing.conf; + include /etc/nginx/conf.d/gateway.routing; } diff --git a/deploy/docker-compose/nginx.gateway.routing.conf b/deploy/docker-compose/nginx.gateway.routing.template similarity index 79% rename from deploy/docker-compose/nginx.gateway.routing.conf rename to deploy/docker-compose/nginx.gateway.routing.template index 8491cfa852..6921c652e4 100644 --- a/deploy/docker-compose/nginx.gateway.routing.conf +++ b/deploy/docker-compose/nginx.gateway.routing.template @@ -62,6 +62,20 @@ location /openops-tables { proxy_set_header X-Forwarded-Proto $scheme; } +location ~ ^/api/v1/webhooks/[^/]+/sync$ { + add_header X-Frame-Options DENY; + proxy_pass http://openops-app; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + proxy_connect_timeout ${NGINX_WEBHOOK_SYNC_TIMEOUT}; + proxy_send_timeout ${NGINX_WEBHOOK_SYNC_TIMEOUT}; + proxy_read_timeout ${NGINX_WEBHOOK_SYNC_TIMEOUT}; + send_timeout ${NGINX_WEBHOOK_SYNC_TIMEOUT}; +} + location /.well-known/acme-challenge/ { root /etc/nginx/tls/acme; } diff --git a/deploy/docker-compose/nginx.gateway.tls.conf b/deploy/docker-compose/nginx.gateway.tls.conf index d58de7af22..d39bc1b460 100644 --- a/deploy/docker-compose/nginx.gateway.tls.conf +++ b/deploy/docker-compose/nginx.gateway.tls.conf @@ -24,7 +24,7 @@ server { add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - include includes/routing.conf; + include /etc/nginx/conf.d/gateway.routing; } server { diff --git a/packages/blocks/microsoft-outlook/src/lib/triggers/new-email.ts b/packages/blocks/microsoft-outlook/src/lib/triggers/new-email.ts index b1d87535cc..5bc433d072 100644 --- a/packages/blocks/microsoft-outlook/src/lib/triggers/new-email.ts +++ b/packages/blocks/microsoft-outlook/src/lib/triggers/new-email.ts @@ -7,6 +7,7 @@ import { TriggerStrategy, createTrigger, } from '@openops/blocks-framework'; +import { logger } from '@openops/server-shared'; import { isEmpty, isString } from '@openops/shared'; import dayjs from 'dayjs'; import { microsoftOutlookAuth } from '../common/auth'; @@ -166,22 +167,26 @@ const polling: Polling< > = { strategy: DedupeStrategy.TIMEBASED, items: async ({ auth, lastFetchEpochMS, propsValue }) => { - const client = await createGraphClient(auth.access_token); - - const messages = await fetchMessages( - client, - propsValue['mailBox'] as string, - lastFetchEpochMS, - ); - - const filteredMessages = messages.filter((message) => - applyClientSideFilters(message, propsValue), - ); - - return filteredMessages.map((message) => ({ - epochMilliSeconds: dayjs(message.receivedDateTime).valueOf(), - data: message, - })); + try { + const client = await createGraphClient(auth.access_token); + + const messages = await fetchMessages( + client, + propsValue['mailBox'] as string, + lastFetchEpochMS, + ); + + const filteredMessages = messages.filter((message) => + applyClientSideFilters(message, propsValue), + ); + return filteredMessages.map((message) => ({ + epochMilliSeconds: dayjs(message.receivedDateTime).valueOf(), + data: message, + })); + } catch (e) { + logger.error(e, 'THE NEW EMAIL ERROR'); + throw e; + } }, }; diff --git a/packages/server/worker/src/lib/trigger/hooks/extract-trigger-payload-hooks.ts b/packages/server/worker/src/lib/trigger/hooks/extract-trigger-payload-hooks.ts index a205e1d4c4..2f488e6d4b 100644 --- a/packages/server/worker/src/lib/trigger/hooks/extract-trigger-payload-hooks.ts +++ b/packages/server/worker/src/lib/trigger/hooks/extract-trigger-payload-hooks.ts @@ -38,6 +38,7 @@ export async function extractPayloads( handleFailureFlow(flowVersion, projectId, engineToken, true); return result.output as unknown[]; } else { + logger.error('THE RESULT IS:', JSON.stringify(result)); logger.error( { result,