diff --git a/CHANGELOG.md b/CHANGELOG.md index ffabced7..1d4f6f78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## 2.3.3-stage.2 (2026-01-05) + +* fix: update qs to 6.14.1 to url dependency (#342) ([a125cb5](https://github.com/aziontech/lib/commit/a125cb5)), closes [#342](https://github.com/aziontech/lib/issues/342) + +## 2.3.3-stage.1 (2026-01-05) + +* fix: update metadata object for firewall requests (#341) ([88b5601](https://github.com/aziontech/lib/commit/88b5601)), closes [#341](https://github.com/aziontech/lib/issues/341) + ## 2.3.2 (2025-12-18) * Merge pull request #339 from aziontech/stage ([ea7606f](https://github.com/aziontech/lib/commit/ea7606f)), closes [#339](https://github.com/aziontech/lib/issues/339) diff --git a/package-lock.json b/package-lock.json index db3f83f5..c94fd823 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "azion", - "version": "2.3.0", + "version": "2.3.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "azion", - "version": "2.3.0", + "version": "2.3.2", "license": "MIT", "workspaces": [ "packages/*" @@ -16711,9 +16711,9 @@ } }, "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" diff --git a/package.json b/package.json index c3a5db26..6ff53e86 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "azion", - "version": "2.3.2", + "version": "2.3.3-stage.2", "description": "Azion Packages for Edge Computing.", "scripts": { "prepare": "husky", @@ -278,5 +278,5 @@ "vm-browserify": "^1.1.2", "webpack": "^5.101.3" }, - "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" + "packageManager": "npm@9.9.0+sha512.c2477bb23cf82a676675d61071dd1a4cfef73f5704b8f95e91eba5cf88d30de315c7f668e57679290d73dde53357743f599a443b43495d3ac3e453457ba7e108" } diff --git a/packages/bundler/src/polyfills/azion/firewall-event/context/firewall-event.context.js b/packages/bundler/src/polyfills/azion/firewall-event/context/firewall-event.context.js index 9acdcb42..489c05b3 100644 --- a/packages/bundler/src/polyfills/azion/firewall-event/context/firewall-event.context.js +++ b/packages/bundler/src/polyfills/azion/firewall-event/context/firewall-event.context.js @@ -60,6 +60,13 @@ class FirewallEventContext extends primitives.FetchEvent { #metadata() { return { + client_fingerprint: 'client', + client_id: '0123a', + configuration_id: '123', + edge_connector_id: '-', + function_id: '456', + geoip_asn: '14061', + geoip_city: 'Clifton', geoip_city_continent_code: 'NA', geoip_city_country_code: 'US', geoip_city_country_name: 'United States', @@ -68,14 +75,18 @@ class FirewallEventContext extends primitives.FetchEvent { geoip_country_name: 'United States', geoip_region: 'NJ', geoip_region_name: 'New Jersey', + http_ssl_ja4: 'ja4', remote_addr: '127.0.0.1', remote_port: '33440', remote_user: null, + request_id: '0123456789abc', + server_fingerprint: 'ja4', + server_fingerprint_ja4h: 'ja4h', server_protocol: 'HTTP/1.1', + solution_id: '123', ssl_cipher: null, ssl_protocol: null, - geoip_asn: '14061', - geoip_city: 'Clifton', + virtualhost_id: '789', }; } diff --git a/packages/presets/src/types.ts b/packages/presets/src/types.ts index b311a4ba..42c90db4 100644 --- a/packages/presets/src/types.ts +++ b/packages/presets/src/types.ts @@ -42,11 +42,23 @@ export interface AzionRequestMetadata { // Server server_protocol: string; + server_fingerprint: string; + server_fingerprint_ja4h: string; // TLS ssl_cipher: string; ssl_protocol: string; + // Other + client_fingerprint: string; + client_id: string; + configuration_id: string; + edge_connector_id: string; + function_id: string; + http_ssl_ja4: string; + request_id: string; + solution_id: string; + // Allows additional unspecified fields [key: string]: string; } diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 21fac2ac..01c96012 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -67,11 +67,23 @@ export interface AzionRuntimeRequestMetadata { // Server server_protocol: string; + server_fingerprint: string; + server_fingerprint_ja4h: string; // TLS ssl_cipher: string; ssl_protocol: string; + // Other + client_fingerprint: string; + client_id: string; + configuration_id: string; + edge_connector_id: string; + function_id: string; + http_ssl_ja4: string; + request_id: string; + solution_id: string; + // Allows additional unspecified fields [key: string]: string; } diff --git a/packages/utils/src/edge/parseRequest/parseRequest.test.ts b/packages/utils/src/edge/parseRequest/parseRequest.test.ts index 531f306e..aad2b219 100644 --- a/packages/utils/src/edge/parseRequest/parseRequest.test.ts +++ b/packages/utils/src/edge/parseRequest/parseRequest.test.ts @@ -7,6 +7,11 @@ describe('parseRequest', () => { beforeEach(() => { mockMetadata = { + client_fingerprint: 'client', + client_id: '0123a', + configuration_id: '123', + edge_connector_id: '-', + function_id: '456', geoip_asn: '12345', geoip_city: 'Sao Paulo', geoip_city_continent_code: 'SA', @@ -17,12 +22,18 @@ describe('parseRequest', () => { geoip_country_name: 'Brazil', geoip_region: 'SP', geoip_region_name: 'Sao Paulo', + http_ssl_ja4: 'ja4', remote_addr: '192.168.1.1', remote_port: '12345', remote_user: '', + request_id: '0123456789abc', + server_fingerprint: 'ja4', + server_fingerprint_ja4h: 'ja4h', server_protocol: 'HTTP/1.1', + solution_id: '123', ssl_cipher: 'TLS_AES_256_GCM_SHA384', ssl_protocol: 'TLSv1.3', + virtualhost_id: '789', }; mockRequest = Object.assign( @@ -163,4 +174,12 @@ describe('parseRequest', () => { expect(result.metadata.ssl_cipher).toBe('TLS_AES_256_GCM_SHA384'); expect(result.metadata.ssl_protocol).toBe('TLSv1.3'); }); + + it('should correctly parse fingerprint information from metadata', async () => { + const result = await parseRequest(mockRequest); + + expect(result.metadata.client_fingerprint).toBe('client'); + expect(result.metadata.server_fingerprint).toBe('ja4'); + expect(result.metadata.server_fingerprint_ja4h).toBe('ja4h'); + }); });