summaryrefslogtreecommitdiff
path: root/packages/integrations/cloudflare/src/utils/getCFObject.ts
diff options
context:
space:
mode:
authorGravatar Alexander Niebuhr <alexander@nbhr.io> 2023-09-28 18:04:49 +0200
committerGravatar GitHub <noreply@github.com> 2023-09-28 18:04:49 +0200
commit081f25b58ffcd30ccb83904fe6373a1e311b6579 (patch)
tree0b9711cc8d8e936823080647f08015c697aa68cb /packages/integrations/cloudflare/src/utils/getCFObject.ts
parentb81400354f987b4eb33670e38f2a7c9b861a03f8 (diff)
downloadastro-081f25b58ffcd30ccb83904fe6373a1e311b6579.tar.gz
astro-081f25b58ffcd30ccb83904fe6373a1e311b6579.tar.zst
astro-081f25b58ffcd30ccb83904fe6373a1e311b6579.zip
chore(cloudflare): refactor structure, optimize patterns (#8654)
--------- Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> Co-authored-by: 100gle <loogle.space@gmail.com>
Diffstat (limited to 'packages/integrations/cloudflare/src/utils/getCFObject.ts')
-rw-r--r--packages/integrations/cloudflare/src/utils/getCFObject.ts70
1 files changed, 70 insertions, 0 deletions
diff --git a/packages/integrations/cloudflare/src/utils/getCFObject.ts b/packages/integrations/cloudflare/src/utils/getCFObject.ts
new file mode 100644
index 000000000..7a4cd8a0c
--- /dev/null
+++ b/packages/integrations/cloudflare/src/utils/getCFObject.ts
@@ -0,0 +1,70 @@
+import type { IncomingRequestCfProperties } from '@cloudflare/workers-types/experimental';
+
+export async function getCFObject(
+ runtimeMode: string
+): Promise<IncomingRequestCfProperties | void> {
+ const CF_ENDPOINT = 'https://workers.cloudflare.com/cf.json';
+ const CF_FALLBACK: IncomingRequestCfProperties = {
+ asOrganization: '',
+ asn: 395747,
+ colo: 'DFW',
+ city: 'Austin',
+ region: 'Texas',
+ regionCode: 'TX',
+ metroCode: '635',
+ postalCode: '78701',
+ country: 'US',
+ continent: 'NA',
+ timezone: 'America/Chicago',
+ latitude: '30.27130',
+ longitude: '-97.74260',
+ clientTcpRtt: 0,
+ httpProtocol: 'HTTP/1.1',
+ requestPriority: 'weight=192;exclusive=0',
+ tlsCipher: 'AEAD-AES128-GCM-SHA256',
+ tlsVersion: 'TLSv1.3',
+ tlsClientAuth: {
+ certPresented: '0',
+ certVerified: 'NONE',
+ certRevoked: '0',
+ certIssuerDN: '',
+ certSubjectDN: '',
+ certIssuerDNRFC2253: '',
+ certSubjectDNRFC2253: '',
+ certIssuerDNLegacy: '',
+ certSubjectDNLegacy: '',
+ certSerial: '',
+ certIssuerSerial: '',
+ certSKI: '',
+ certIssuerSKI: '',
+ certFingerprintSHA1: '',
+ certFingerprintSHA256: '',
+ certNotBefore: '',
+ certNotAfter: '',
+ },
+ edgeRequestKeepAliveStatus: 0,
+ hostMetadata: undefined,
+ clientTrustScore: 99,
+ botManagement: {
+ corporateProxy: false,
+ verifiedBot: false,
+ ja3Hash: '25b4882c2bcb50cd6b469ff28c596742',
+ staticResource: false,
+ detectionIds: [],
+ score: 99,
+ },
+ };
+
+ if (runtimeMode === 'local') {
+ return CF_FALLBACK;
+ } else if (runtimeMode === 'remote') {
+ try {
+ const res = await fetch(CF_ENDPOINT);
+ const cfText = await res.text();
+ const storedCf = JSON.parse(cfText);
+ return storedCf;
+ } catch (e: any) {
+ return CF_FALLBACK;
+ }
+ }
+}