From 57563e193fd3a52609c8ddceeca243238db7a079 Mon Sep 17 00:00:00 2001 From: Akash Chetty Date: Thu, 3 Oct 2024 12:36:52 +0530 Subject: [PATCH 1/6] fix: redshift serverless bq partitioning configuration changes (#1730) --- .../destinations/bq/db-config.json | 4 +- .../destinations/bq/schema.json | 10 ++ .../destinations/bq/ui-config.json | 46 ++++++++ .../destinations/rs/db-config.json | 2 + .../destinations/rs/schema.json | 42 ++++++- .../destinations/rs/ui-config.json | 36 ++++++ test/data/validation/destinations/bq.json | 68 +++++++++++ test/data/validation/destinations/rs.json | 106 ++++++++++++++++++ 8 files changed, 308 insertions(+), 6 deletions(-) diff --git a/src/configurations/destinations/bq/db-config.json b/src/configurations/destinations/bq/db-config.json index c9733b01a..dc87d8e71 100644 --- a/src/configurations/destinations/bq/db-config.json +++ b/src/configurations/destinations/bq/db-config.json @@ -35,7 +35,9 @@ "skipUsersTable", "jsonPaths", "underscoreDivideNumbers", - "allowUsersContextTraits" + "allowUsersContextTraits", + "partitionColumn", + "partitionType" ], "android": [ "connectionMode", diff --git a/src/configurations/destinations/bq/schema.json b/src/configurations/destinations/bq/schema.json index 8a1a5b836..ca4b66f9d 100644 --- a/src/configurations/destinations/bq/schema.json +++ b/src/configurations/destinations/bq/schema.json @@ -33,6 +33,16 @@ "pattern": "^(5|15|30|60|180|360|720|1440)$", "default": "180" }, + "partitionColumn": { + "type": "string", + "pattern": "^(_PARTITIONTIME|loaded_at|received_at)$", + "default": "_PARTITIONTIME" + }, + "partitionType": { + "type": "string", + "pattern": "^(hour|day)$", + "default": "day" + }, "syncStartAt": { "type": "string" }, diff --git a/src/configurations/destinations/bq/ui-config.json b/src/configurations/destinations/bq/ui-config.json index 8a10f689b..41760ea6b 100644 --- a/src/configurations/destinations/bq/ui-config.json +++ b/src/configurations/destinations/bq/ui-config.json @@ -142,6 +142,52 @@ }, "required": false, "footerNote": "Note: Please specify time in UTC" + }, + { + "type": "singleSelect", + "immutable": true, + "label": "Partition Column", + "value": "partitionColumn", + "options": [ + { + "name": "Ingestion Time", + "value": "_PARTITIONTIME" + }, + { + "name": "Loaded At", + "value": "loaded_at" + }, + { + "name": "Received At", + "value": "received_at" + } + ], + "defaultOption": { + "name": "Ingestion Time", + "value": "_PARTITIONTIME" + }, + "required": false + }, + { + "type": "singleSelect", + "immutable": true, + "label": "Partition Type", + "value": "partitionType", + "options": [ + { + "name": "Hour", + "value": "hour" + }, + { + "name": "Day", + "value": "day" + } + ], + "defaultOption": { + "name": "Day", + "value": "day" + }, + "required": false } ] }, diff --git a/src/configurations/destinations/rs/db-config.json b/src/configurations/destinations/rs/db-config.json index 6c6d9de0c..c1fe5e62e 100644 --- a/src/configurations/destinations/rs/db-config.json +++ b/src/configurations/destinations/rs/db-config.json @@ -44,6 +44,8 @@ "iamRoleARNForAuth", "clusterId", "clusterRegion", + "useServerless", + "workgroupName", "bucketName", "iamRoleARN", "roleBasedAuth", diff --git a/src/configurations/destinations/rs/schema.json b/src/configurations/destinations/rs/schema.json index 5290eb6d8..d7678a83b 100644 --- a/src/configurations/destinations/rs/schema.json +++ b/src/configurations/destinations/rs/schema.json @@ -941,19 +941,51 @@ "type": "string", "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" }, - "clusterId": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,255})$" - }, "clusterRegion": { "type": "string", "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,255})$" }, "useIAMForAuth": { "const": true + }, + "useServerless": { + "type": "boolean", + "default": false } }, - "required": ["clusterId", "clusterRegion", "iamRoleARNForAuth", "useIAMForAuth"] + "anyOf": [ + { + "properties": { + "clusterId": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,255})$" + }, + "useServerless": { + "const": false + }, + "useIAMForAuth": { + "const": true + } + }, + "required": ["clusterId", "useIAMForAuth"] + }, + { + "properties": { + "workgroupName": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,255})$" + }, + "useIAMForAuth": { + "const": true + }, + "useServerless": { + "const": true + } + }, + "required": ["workgroupName", "useIAMForAuth", "useServerless"] + } + ], + "required": ["clusterRegion", "iamRoleARNForAuth", "useIAMForAuth"] } }, { diff --git a/src/configurations/destinations/rs/ui-config.json b/src/configurations/destinations/rs/ui-config.json index 94991e2b2..5e8d04057 100644 --- a/src/configurations/destinations/rs/ui-config.json +++ b/src/configurations/destinations/rs/ui-config.json @@ -40,12 +40,29 @@ "placeholder": "5439", "required": true }, + { + "type": "checkbox", + "preRequisiteField": [ + { + "name": "useIAMForAuth", + "selectedValue": true + } + ], + "label": "Use Redshift Serverless", + "value": "useServerless", + "required": false, + "default": false + }, { "type": "textInput", "preRequisiteField": [ { "name": "useIAMForAuth", "selectedValue": true + }, + { + "name": "useServerless", + "selectedValue": false } ], "label": "Cluster Id", @@ -55,6 +72,25 @@ "placeholder": "Cluster Identifier", "required": true }, + { + "type": "textInput", + "preRequisiteField": [ + { + "name": "useIAMForAuth", + "selectedValue": true + }, + { + "name": "useServerless", + "selectedValue": true + } + ], + "label": "Workgroup Name", + "value": "workgroupName", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,255})$", + "regexErrorMessage": "Invalid Workgroup Name", + "placeholder": "Workgroup Name", + "required": true + }, { "type": "textInput", "preRequisiteField": [ diff --git a/test/data/validation/destinations/bq.json b/test/data/validation/destinations/bq.json index 8ecb38f76..feed21204 100644 --- a/test/data/validation/destinations/bq.json +++ b/test/data/validation/destinations/bq.json @@ -13,6 +13,74 @@ }, "result": true }, + { + "config": { + "project": "test-gcs-project", + "location": "", + "bucketName": "test-bucket", + "prefix": "xyzxx", + "namespace": "eu_new3", + "partitionColumn": "_PARTITIONTIME", + "partitionType": "day", + "credentials": "{}", + "syncFrequency": "30", + "testConnection": false, + "testConnectionTS": 1621402528550 + }, + "result": true + }, + { + "config": { + "project": "test-gcs-project", + "location": "", + "bucketName": "test-bucket", + "prefix": "xyzxx", + "namespace": "eu_new3", + "partitionColumn": "received_at", + "partitionType": "hour", + "credentials": "{}", + "syncFrequency": "30", + "testConnection": false, + "testConnectionTS": 1621402528550 + }, + "result": true + }, + { + "config": { + "project": "test-gcs-project", + "location": "", + "bucketName": "test-bucket", + "prefix": "xyzxx", + "namespace": "eu_new3", + "partitionColumn": "invalid", + "partitionType": "day", + "credentials": "{}", + "syncFrequency": "30", + "testConnection": false, + "testConnectionTS": 1621402528550 + }, + "result": false, + "error": [ + "partitionColumn must match pattern \"^(_PARTITIONTIME|loaded_at|received_at|timestamp)$\"" + ] + }, + { + "config": { + "project": "test-gcs-project", + "location": "", + "bucketName": "test-bucket", + "prefix": "xyzxx", + "namespace": "eu_new3", + "partitionColumn": "_PARTITIONTIME", + "partitionType": "invalid", + "credentials": "{}", + "syncFrequency": "30", + "testConnection": false, + "testConnectionTS": 1621402528550 + }, + "result": false, + "error": ["partitionType must match pattern \"^(hour|day|month|year)$\""] + }, { "config": { "project": "test-gcs-project", diff --git a/test/data/validation/destinations/rs.json b/test/data/validation/destinations/rs.json index 7419ae921..966873298 100644 --- a/test/data/validation/destinations/rs.json +++ b/test/data/validation/destinations/rs.json @@ -125,11 +125,117 @@ "result": false, "err": [ " must have required property 'clusterId'", + " must have required property 'workgroupName'", + " must have required property 'useServerless'", + " must match a schema in anyOf", " must have required property 'clusterRegion'", " must have required property 'iamRoleARNForAuth'", " must match \"then\" schema" ] }, + { + "config": { + "host": "", + "password": "", + "port": "", + "database": "test-database", + "user": "test-user", + "useIAMForAuth": true, + "useServerless": false, + "iamRoleARNForAuth": "iamRoleARNForAuth", + "clusterId": "clusterId", + "clusterRegion": "clusterRegion", + "useSSH": false, + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "roleBasedAuth": false, + "accessKeyID": "", + "accessKey": "" + }, + "result": true + }, + { + "config": { + "host": "", + "password": "", + "port": "", + "database": "test-database", + "user": "test-user", + "useIAMForAuth": true, + "useServerless": true, + "iamRoleARNForAuth": "iamRoleARNForAuth", + "clusterId": "clusterId", + "clusterRegion": "clusterRegion", + "useSSH": false, + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "roleBasedAuth": false, + "accessKeyID": "", + "accessKey": "" + }, + "result": false, + "err": [ + "useServerless must be equal to constant", + " must have required property 'workgroupName'", + " must match a schema in anyOf", + " must match \"then\" schema" + ] + }, + { + "config": { + "host": "", + "password": "", + "port": "", + "database": "test-database", + "user": "test-user", + "useIAMForAuth": true, + "useServerless": true, + "iamRoleARNForAuth": "iamRoleARNForAuth", + "workgroupName": "workgroupName", + "clusterRegion": "clusterRegion", + "useSSH": false, + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "roleBasedAuth": false, + "accessKeyID": "", + "accessKey": "" + }, + "result": true + }, + { + "config": { + "host": "", + "password": "", + "port": "", + "database": "test-database", + "user": "test-user", + "useIAMForAuth": true, + "useServerless": true, + "iamRoleARNForAuth": "iamRoleARNForAuth", + "clusterId": "clusterId", + "workgroupName": "workgroupName", + "clusterRegion": "clusterRegion", + "useSSH": false, + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "roleBasedAuth": false, + "accessKeyID": "", + "accessKey": "" + }, + "result": true + }, { "config": { "host": "test-host", From a7b6d10dbcdbaaf660e32f3a72e7ca406ba980d4 Mon Sep 17 00:00:00 2001 From: Alexandros Milaios Date: Thu, 3 Oct 2024 10:31:01 +0300 Subject: [PATCH 2/6] fix: update image for singer zendesk support to v8.3.9 (#1731) --- .../sources/singer_zendesk_support/db-config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/configurations/sources/singer_zendesk_support/db-config.json b/src/configurations/sources/singer_zendesk_support/db-config.json index 21cf4d376..fb8aa7d5d 100644 --- a/src/configurations/sources/singer_zendesk_support/db-config.json +++ b/src/configurations/sources/singer_zendesk_support/db-config.json @@ -3,7 +3,7 @@ "category": "singer-protocol", "displayName": "Zendesk Support", "options": { - "image": "rudderstack/source-zendesk-support:v8.2.22" + "image": "rudderstack/source-zendesk-support:v8.3.9" }, "type": "cloudSource" } From 92401fc02df8ebfacd43e327be62b5d0d8aac126 Mon Sep 17 00:00:00 2001 From: Gauravudia <60897972+Gauravudia@users.noreply.github.com> Date: Fri, 4 Oct 2024 10:20:11 +0530 Subject: [PATCH 3/6] fix: webhook url regex to block ftp (#1735) --- .../destinations/webhook/schema.json | 2 +- .../destinations/webhook/ui-config.json | 2 +- test/data/validation/destinations/webhook.json | 17 ++++++++++------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/configurations/destinations/webhook/schema.json b/src/configurations/destinations/webhook/schema.json index eee4570a5..9fbeb476b 100644 --- a/src/configurations/destinations/webhook/schema.json +++ b/src/configurations/destinations/webhook/schema.json @@ -517,7 +517,7 @@ }, "webhookUrl": { "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?|ftp):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$" + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$" }, "webhookMethod": { "type": "string", diff --git a/src/configurations/destinations/webhook/ui-config.json b/src/configurations/destinations/webhook/ui-config.json index c39e5b9c8..9a7448136 100644 --- a/src/configurations/destinations/webhook/ui-config.json +++ b/src/configurations/destinations/webhook/ui-config.json @@ -9,7 +9,7 @@ "value": "webhookUrl", "required": true, "placeholder": "http://www.abcd.com", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?|ftp):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$" + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$" }, { "type": "singleSelect", diff --git a/test/data/validation/destinations/webhook.json b/test/data/validation/destinations/webhook.json index 1b7b8f4e0..59f98338b 100644 --- a/test/data/validation/destinations/webhook.json +++ b/test/data/validation/destinations/webhook.json @@ -62,7 +62,7 @@ }, "result": false, "err": [ - "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?|ftp):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" + "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" ] }, { @@ -86,7 +86,7 @@ }, "result": false, "err": [ - "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?|ftp):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" + "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" ] }, { @@ -110,7 +110,7 @@ }, "result": false, "err": [ - "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?|ftp):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" + "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" ] }, { @@ -134,7 +134,7 @@ }, "result": false, "err": [ - "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?|ftp):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" + "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" ] }, { @@ -158,7 +158,7 @@ }, "result": false, "err": [ - "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?|ftp):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" + "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" ] }, { @@ -182,7 +182,7 @@ }, "result": false, "err": [ - "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?|ftp):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" + "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" ] }, { @@ -237,7 +237,10 @@ } ] }, - "result": true + "result": false, + "err": [ + "webhookUrl must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?):\\/\\/(?!localhost|127\\.0\\.0\\.1|10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}|0\\.0\\.0\\.0|\\[::1\\]|\\[fc[0-9a-fA-F]{2}:.*\\]|\\[fd[0-9a-fA-F]{2}:.*\\]|\\[::ffff:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\]).*([^\\s/$.?#].[^\\s]*)$\"" + ] }, { "config": { From 67daaae9a446258d4a7d8ae95a8e95af35c77853 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 4 Oct 2024 04:52:53 +0000 Subject: [PATCH 4/6] chore(release): 1.94.2 --- CHANGELOG.md | 9 +++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39e274ed1..0f07240c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [1.94.2](https://github.com/rudderlabs/rudder-config-schema/compare/v1.94.1...v1.94.2) (2024-10-04) + + +### Bug Fixes + +* redshift serverless bq partitioning configuration changes ([#1730](https://github.com/rudderlabs/rudder-config-schema/issues/1730)) ([57563e1](https://github.com/rudderlabs/rudder-config-schema/commit/57563e193fd3a52609c8ddceeca243238db7a079)) +* update image for singer zendesk support to v8.3.9 ([#1731](https://github.com/rudderlabs/rudder-config-schema/issues/1731)) ([a7b6d10](https://github.com/rudderlabs/rudder-config-schema/commit/a7b6d10dbcdbaaf660e32f3a72e7ca406ba980d4)) +* webhook url regex to block ftp ([#1735](https://github.com/rudderlabs/rudder-config-schema/issues/1735)) ([92401fc](https://github.com/rudderlabs/rudder-config-schema/commit/92401fc02df8ebfacd43e327be62b5d0d8aac126)) + ### [1.94.1](https://github.com/rudderlabs/rudder-config-schema/compare/v1.94.0...v1.94.1) (2024-10-01) diff --git a/package-lock.json b/package-lock.json index fbec2e5c0..edba10b1a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rudder-config-schema", - "version": "1.94.1", + "version": "1.94.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rudder-config-schema", - "version": "1.94.1", + "version": "1.94.2", "license": "MIT", "dependencies": { "ajv": "^8.12.0", diff --git a/package.json b/package.json index a36b32ebf..c380fa19a 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rudder-config-schema", - "version": "1.94.1", + "version": "1.94.2", "description": "", "main": "src/index.ts", "private": true, From 7b93a38a68743fd12cb13ea769c004e0a4f288b8 Mon Sep 17 00:00:00 2001 From: shrouti1507 <60211312+shrouti1507@users.noreply.github.com> Date: Fri, 4 Oct 2024 10:46:48 +0530 Subject: [PATCH 5/6] fix: salesforce v2 sandbox config remove (#1737) --- .../salesforce_oauth/db-config.json | 2 +- .../destinations/salesforce_oauth/schema.json | 4 --- .../salesforce_oauth/ui-config.json | 6 ---- .../destinations/salesforce_oauth.json | 30 +++++++------------ 4 files changed, 11 insertions(+), 31 deletions(-) diff --git a/src/configurations/destinations/salesforce_oauth/db-config.json b/src/configurations/destinations/salesforce_oauth/db-config.json index 38dc95cc6..ad7196048 100644 --- a/src/configurations/destinations/salesforce_oauth/db-config.json +++ b/src/configurations/destinations/salesforce_oauth/db-config.json @@ -27,7 +27,7 @@ ], "supportedMessageTypes": ["identify"], "destConfig": { - "defaultConfig": ["rudderAccountId", "mapProperties", "sandbox", "useContactId"], + "defaultConfig": ["rudderAccountId", "mapProperties", "useContactId"], "android": [ "connectionMode", "consentManagement", diff --git a/src/configurations/destinations/salesforce_oauth/schema.json b/src/configurations/destinations/salesforce_oauth/schema.json index 3fdb57a82..3d52493b6 100644 --- a/src/configurations/destinations/salesforce_oauth/schema.json +++ b/src/configurations/destinations/salesforce_oauth/schema.json @@ -8,10 +8,6 @@ "type": "boolean", "default": true }, - "sandbox": { - "type": "boolean", - "default": false - }, "useContactId": { "type": "boolean", "default": false diff --git a/src/configurations/destinations/salesforce_oauth/ui-config.json b/src/configurations/destinations/salesforce_oauth/ui-config.json index 0a455aacf..60e469af2 100644 --- a/src/configurations/destinations/salesforce_oauth/ui-config.json +++ b/src/configurations/destinations/salesforce_oauth/ui-config.json @@ -9,12 +9,6 @@ "value": "mapProperties", "default": true }, - { - "type": "checkbox", - "label": "Sandbox mode", - "value": "sandbox", - "default": false - }, { "type": "checkbox", "label": "Use contactId for converted leads", diff --git a/test/data/validation/destinations/salesforce_oauth.json b/test/data/validation/destinations/salesforce_oauth.json index 8d3423a71..fc2005a82 100644 --- a/test/data/validation/destinations/salesforce_oauth.json +++ b/test/data/validation/destinations/salesforce_oauth.json @@ -2,7 +2,6 @@ { "config": { "mapProperties": true, - "sandbox": false, "useContactId": true }, "result": true @@ -10,7 +9,7 @@ { "config": { "mapProperties": true, - "sandbox": false, + "useContactId": true }, "result": true @@ -18,25 +17,16 @@ { "config": { "mapProperties": true, - "sandbox": false, + "useContactId": true }, "result": true }, - { - "config": { - "mapProperties": true, - "sandbox": "random", - "useContactId": true - }, - "result": false, - "err": ["sandbox must be boolean"] - }, { "testTitle": "With valid multiple consent management providers config", "config": { "mapProperties": true, - "sandbox": false, + "useContactId": true, "consentManagement": { "web": [ @@ -70,7 +60,7 @@ "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", "config": { "mapProperties": true, - "sandbox": false, + "useContactId": true, "consentManagement": { "android": [ @@ -91,7 +81,7 @@ "testTitle": "With consent management custom provider config and no resolutionStrategy value", "config": { "mapProperties": true, - "sandbox": false, + "useContactId": true, "consentManagement": { "android": [ @@ -111,7 +101,7 @@ "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", "config": { "mapProperties": true, - "sandbox": false, + "useContactId": true, "consentManagement": { "android": [ @@ -127,7 +117,7 @@ "testTitle": "With consent management custom provider config invalid provider value", "config": { "mapProperties": true, - "sandbox": false, + "useContactId": true, "consentManagement": { "android": [ @@ -143,7 +133,7 @@ { "config": { "mapProperties": true, - "sandbox": false, + "useContactId": true, "oneTrustCookieCategories": { "android": [ @@ -263,7 +253,7 @@ { "config": { "mapProperties": true, - "sandbox": false, + "useContactId": true, "oneTrustCookieCategories": [ { @@ -288,7 +278,7 @@ { "config": { "mapProperties": true, - "sandbox": false, + "useContactId": true, "oneTrustCookieCategories": { "android": [ From 4bbc48011f56d0496729340ff911c75b5bdeb454 Mon Sep 17 00:00:00 2001 From: ItsSudip Date: Fri, 4 Oct 2024 11:21:17 +0530 Subject: [PATCH 6/6] chore: update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f07240c3..97131132c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. See [standa * redshift serverless bq partitioning configuration changes ([#1730](https://github.com/rudderlabs/rudder-config-schema/issues/1730)) ([57563e1](https://github.com/rudderlabs/rudder-config-schema/commit/57563e193fd3a52609c8ddceeca243238db7a079)) * update image for singer zendesk support to v8.3.9 ([#1731](https://github.com/rudderlabs/rudder-config-schema/issues/1731)) ([a7b6d10](https://github.com/rudderlabs/rudder-config-schema/commit/a7b6d10dbcdbaaf660e32f3a72e7ca406ba980d4)) * webhook url regex to block ftp ([#1735](https://github.com/rudderlabs/rudder-config-schema/issues/1735)) ([92401fc](https://github.com/rudderlabs/rudder-config-schema/commit/92401fc02df8ebfacd43e327be62b5d0d8aac126)) +* salesforce v2 sandbox config remove ([#1737](https://github.com/rudderlabs/rudder-config-schema/issues/1737)) ([7b93a38](https://github.com/rudderlabs/rudder-config-schema/commit/7b93a38a68743fd12cb13ea769c004e0a4f288b8)) ### [1.94.1](https://github.com/rudderlabs/rudder-config-schema/compare/v1.94.0...v1.94.1) (2024-10-01)