@ever-works/activepieces-plugin 1.0.11 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -2658,6 +2658,7 @@ function isSafeWebhookUrl(rawUrl) {
2658
2658
  if (host.startsWith("[") && host.endsWith("]")) {
2659
2659
  host = host.slice(1, -1);
2660
2660
  }
2661
+ host = host.replace(/\.+$/, "");
2661
2662
  if (CLOUD_METADATA_HOSTNAMES.has(host)) {
2662
2663
  return false;
2663
2664
  }
@@ -2687,23 +2688,69 @@ function isPrivateIPv4(ip) {
2687
2688
  if (a === 172 && b >= 16 && b <= 31) return true;
2688
2689
  if (a === 192 && b === 168) return true;
2689
2690
  if (a === 192 && b === 0 && parts[2] === 0) return true;
2691
+ if (a === 198 && (b === 18 || b === 19)) return true;
2692
+ if (a === 192 && b === 0 && parts[2] === 2) return true;
2693
+ if (a === 198 && b === 51 && parts[2] === 100) return true;
2694
+ if (a === 203 && b === 0 && parts[2] === 113) return true;
2690
2695
  if (a === 100 && b >= 64 && b <= 127) return true;
2691
2696
  if (a >= 224) return true;
2692
2697
  return false;
2693
2698
  }
2694
- function isPrivateIPv6(ip) {
2695
- const lower = ip.toLowerCase();
2696
- if (lower === "::1" || lower === "::") return true;
2697
- if (lower.startsWith("fc") || lower.startsWith("fd")) return true;
2698
- const firstHextet = lower.split(":", 1)[0];
2699
- if (/^[0-9a-f]{1,4}$/.test(firstHextet)) {
2700
- const group0 = parseInt(firstHextet, 16);
2701
- if ((group0 & 65472) === 65152) return true;
2702
- }
2703
- if (lower.startsWith("::ffff:")) {
2704
- const v4 = lower.slice("::ffff:".length);
2705
- if ((0, import_net.isIP)(v4) === 4) return isPrivateIPv4(v4);
2699
+ function parseIPv6Groups(ip) {
2700
+ let text = ip.trim().toLowerCase();
2701
+ const zone = text.indexOf("%");
2702
+ if (zone >= 0) text = text.slice(0, zone);
2703
+ if ((0, import_net.isIP)(text) !== 6) return null;
2704
+ const lastColon = text.lastIndexOf(":");
2705
+ const tail = text.slice(lastColon + 1);
2706
+ if (tail.includes(".")) {
2707
+ if ((0, import_net.isIP)(tail) !== 4) return null;
2708
+ const [a, b, c, d] = tail.split(".").map((part) => Number(part));
2709
+ text = `${text.slice(0, lastColon + 1)}${(a << 8 | b).toString(16)}:${(c << 8 | d).toString(16)}`;
2710
+ }
2711
+ const halves = text.split("::");
2712
+ if (halves.length > 2) return null;
2713
+ const head = halves[0] ? halves[0].split(":") : [];
2714
+ const rest = halves.length === 2 && halves[1] ? halves[1].split(":") : [];
2715
+ const fill = halves.length === 2 ? 8 - head.length - rest.length : 0;
2716
+ if (fill < 0) return null;
2717
+ const groups = [...head, ...new Array(fill).fill("0"), ...rest].map((group) => parseInt(group, 16));
2718
+ if (groups.length !== 8 || groups.some((group) => Number.isNaN(group) || group < 0 || group > 65535)) {
2719
+ return null;
2706
2720
  }
2721
+ return groups;
2722
+ }
2723
+ function ipv4FromGroups(high, low) {
2724
+ return `${high >> 8}.${high & 255}.${low >> 8}.${low & 255}`;
2725
+ }
2726
+ function embeddedIPv4(ip) {
2727
+ const g = parseIPv6Groups(ip);
2728
+ if (!g) return null;
2729
+ const zeros = (from, to) => g.slice(from, to).every((group) => group === 0);
2730
+ if (zeros(0, 5) && g[5] === 65535) return ipv4FromGroups(g[6], g[7]);
2731
+ if (zeros(0, 4) && g[4] === 65535 && g[5] === 0) return ipv4FromGroups(g[6], g[7]);
2732
+ if (zeros(0, 6) && (g[6] !== 0 || g[7] > 1)) return ipv4FromGroups(g[6], g[7]);
2733
+ if (g[0] === 100 && g[1] === 65435 && zeros(2, 6)) return ipv4FromGroups(g[6], g[7]);
2734
+ if (g[0] === 8194) return ipv4FromGroups(g[1], g[2]);
2735
+ if (g[0] === 8193 && g[1] === 0) return ipv4FromGroups(g[6] ^ 65535, g[7] ^ 65535);
2736
+ return null;
2737
+ }
2738
+ function isPrivateIPv6(ip) {
2739
+ const g = parseIPv6Groups(ip);
2740
+ if (!g) {
2741
+ const lower = ip.toLowerCase();
2742
+ return lower === "::1" || lower === "::" || lower.startsWith("fc") || lower.startsWith("fd");
2743
+ }
2744
+ if (g.every((group) => group === 0)) return true;
2745
+ if (g.slice(0, 7).every((group) => group === 0) && g[7] === 1) return true;
2746
+ if ((g[0] & 65024) === 64512) return true;
2747
+ if ((g[0] & 65472) === 65152) return true;
2748
+ if ((g[0] & 65472) === 65216) return true;
2749
+ if ((g[0] & 65280) === 65280) return true;
2750
+ if (g[0] === 8193 && g[1] === 3512) return true;
2751
+ if (g[0] === 100 && g[1] === 65435 && g[2] === 1) return true;
2752
+ const v4 = embeddedIPv4(ip);
2753
+ if (v4 && isPrivateIPv4(v4)) return true;
2707
2754
  return false;
2708
2755
  }
2709
2756
 
package/dist/index.js CHANGED
@@ -2631,6 +2631,7 @@ function isSafeWebhookUrl(rawUrl) {
2631
2631
  if (host.startsWith("[") && host.endsWith("]")) {
2632
2632
  host = host.slice(1, -1);
2633
2633
  }
2634
+ host = host.replace(/\.+$/, "");
2634
2635
  if (CLOUD_METADATA_HOSTNAMES.has(host)) {
2635
2636
  return false;
2636
2637
  }
@@ -2660,23 +2661,69 @@ function isPrivateIPv4(ip) {
2660
2661
  if (a === 172 && b >= 16 && b <= 31) return true;
2661
2662
  if (a === 192 && b === 168) return true;
2662
2663
  if (a === 192 && b === 0 && parts[2] === 0) return true;
2664
+ if (a === 198 && (b === 18 || b === 19)) return true;
2665
+ if (a === 192 && b === 0 && parts[2] === 2) return true;
2666
+ if (a === 198 && b === 51 && parts[2] === 100) return true;
2667
+ if (a === 203 && b === 0 && parts[2] === 113) return true;
2663
2668
  if (a === 100 && b >= 64 && b <= 127) return true;
2664
2669
  if (a >= 224) return true;
2665
2670
  return false;
2666
2671
  }
2667
- function isPrivateIPv6(ip) {
2668
- const lower = ip.toLowerCase();
2669
- if (lower === "::1" || lower === "::") return true;
2670
- if (lower.startsWith("fc") || lower.startsWith("fd")) return true;
2671
- const firstHextet = lower.split(":", 1)[0];
2672
- if (/^[0-9a-f]{1,4}$/.test(firstHextet)) {
2673
- const group0 = parseInt(firstHextet, 16);
2674
- if ((group0 & 65472) === 65152) return true;
2675
- }
2676
- if (lower.startsWith("::ffff:")) {
2677
- const v4 = lower.slice("::ffff:".length);
2678
- if (isIP(v4) === 4) return isPrivateIPv4(v4);
2672
+ function parseIPv6Groups(ip) {
2673
+ let text = ip.trim().toLowerCase();
2674
+ const zone = text.indexOf("%");
2675
+ if (zone >= 0) text = text.slice(0, zone);
2676
+ if (isIP(text) !== 6) return null;
2677
+ const lastColon = text.lastIndexOf(":");
2678
+ const tail = text.slice(lastColon + 1);
2679
+ if (tail.includes(".")) {
2680
+ if (isIP(tail) !== 4) return null;
2681
+ const [a, b, c, d] = tail.split(".").map((part) => Number(part));
2682
+ text = `${text.slice(0, lastColon + 1)}${(a << 8 | b).toString(16)}:${(c << 8 | d).toString(16)}`;
2683
+ }
2684
+ const halves = text.split("::");
2685
+ if (halves.length > 2) return null;
2686
+ const head = halves[0] ? halves[0].split(":") : [];
2687
+ const rest = halves.length === 2 && halves[1] ? halves[1].split(":") : [];
2688
+ const fill = halves.length === 2 ? 8 - head.length - rest.length : 0;
2689
+ if (fill < 0) return null;
2690
+ const groups = [...head, ...new Array(fill).fill("0"), ...rest].map((group) => parseInt(group, 16));
2691
+ if (groups.length !== 8 || groups.some((group) => Number.isNaN(group) || group < 0 || group > 65535)) {
2692
+ return null;
2679
2693
  }
2694
+ return groups;
2695
+ }
2696
+ function ipv4FromGroups(high, low) {
2697
+ return `${high >> 8}.${high & 255}.${low >> 8}.${low & 255}`;
2698
+ }
2699
+ function embeddedIPv4(ip) {
2700
+ const g = parseIPv6Groups(ip);
2701
+ if (!g) return null;
2702
+ const zeros = (from, to) => g.slice(from, to).every((group) => group === 0);
2703
+ if (zeros(0, 5) && g[5] === 65535) return ipv4FromGroups(g[6], g[7]);
2704
+ if (zeros(0, 4) && g[4] === 65535 && g[5] === 0) return ipv4FromGroups(g[6], g[7]);
2705
+ if (zeros(0, 6) && (g[6] !== 0 || g[7] > 1)) return ipv4FromGroups(g[6], g[7]);
2706
+ if (g[0] === 100 && g[1] === 65435 && zeros(2, 6)) return ipv4FromGroups(g[6], g[7]);
2707
+ if (g[0] === 8194) return ipv4FromGroups(g[1], g[2]);
2708
+ if (g[0] === 8193 && g[1] === 0) return ipv4FromGroups(g[6] ^ 65535, g[7] ^ 65535);
2709
+ return null;
2710
+ }
2711
+ function isPrivateIPv6(ip) {
2712
+ const g = parseIPv6Groups(ip);
2713
+ if (!g) {
2714
+ const lower = ip.toLowerCase();
2715
+ return lower === "::1" || lower === "::" || lower.startsWith("fc") || lower.startsWith("fd");
2716
+ }
2717
+ if (g.every((group) => group === 0)) return true;
2718
+ if (g.slice(0, 7).every((group) => group === 0) && g[7] === 1) return true;
2719
+ if ((g[0] & 65024) === 64512) return true;
2720
+ if ((g[0] & 65472) === 65152) return true;
2721
+ if ((g[0] & 65472) === 65216) return true;
2722
+ if ((g[0] & 65280) === 65280) return true;
2723
+ if (g[0] === 8193 && g[1] === 3512) return true;
2724
+ if (g[0] === 100 && g[1] === 65435 && g[2] === 1) return true;
2725
+ const v4 = embeddedIPv4(ip);
2726
+ if (v4 && isPrivateIPv4(v4)) return true;
2680
2727
  return false;
2681
2728
  }
2682
2729
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ever-works/activepieces-plugin",
3
- "version": "1.0.11",
3
+ "version": "1.0.12",
4
4
  "description": "Activepieces Automation Pipeline Plugin - Delegates Work generation steps to Activepieces flows",
5
5
  "author": {
6
6
  "name": "Ever Co. LTD",
@@ -33,10 +33,10 @@
33
33
  "test:coverage": "vitest run --coverage"
34
34
  },
35
35
  "peerDependencies": {
36
- "@ever-works/plugin": "^1.2.8"
36
+ "@ever-works/plugin": "^1.2.9"
37
37
  },
38
38
  "devDependencies": {
39
- "@ever-works/plugin": "^1.2.8",
39
+ "@ever-works/plugin": "^1.2.9",
40
40
  "@types/node": "^26.6.4",
41
41
  "tsup": "^8.0.0",
42
42
  "typescript": "^5.9.3",
@@ -76,8 +76,8 @@
76
76
  "url": "https://github.com/ever-works/ever-works/issues"
77
77
  },
78
78
  "everworksRelease": {
79
- "contentHash": "sha256:9239f14d8e4b7ddd3dbf095113bfb205cf825b1013d3a52b0fa0499ff8f9b04c",
80
- "commit": "efd11a2282ea3e514e93f754b9b008543a7cff60",
81
- "source": "https://github.com/ever-works/ever-works/tree/efd11a2282ea3e514e93f754b9b008543a7cff60/packages/plugins/activepieces"
79
+ "contentHash": "sha256:ab45e1abb88fc67ca4be7bfc1067bb433885299fb505a706779a0c7347d43834",
80
+ "commit": "5b5a17e1cdc02e06383d508a6424a863521fc3e0",
81
+ "source": "https://github.com/ever-works/ever-works/tree/5b5a17e1cdc02e06383d508a6424a863521fc3e0/packages/plugins/activepieces"
82
82
  }
83
83
  }