feat: temp fix mega.nz (#103)

This commit is contained in:
Dream Hunter
2024-04-07 21:19:20 +08:00
committed by GitHub
parent 4e4accddee
commit 105d51ff91
6 changed files with 106 additions and 90 deletions

1
.gitignore vendored
View File

@@ -1 +1,2 @@
dist/
test/

View File

@@ -2,23 +2,24 @@
"name": "cloudflare_temp_email",
"version": "0.0.0",
"private": true,
"type": "module",
"scripts": {
"dev": "wrangler dev",
"deploy": "wrangler deploy",
"start": "wrangler dev"
},
"devDependencies": {
"wrangler": "^3.41.0"
"wrangler": "^3.48.0"
},
"dependencies": {
"hono": "^4.1.7",
"mailparser": "3.6.5",
"hono": "^4.2.2",
"mailparser": "^3.6.9",
"mimetext": "^3.0.24",
"postal-mime": "^1.1.0"
"postal-mime": "^2.2.1"
},
"pnpm": {
"patchedDependencies": {
"mailparser@3.6.5": "patches/mailparser@3.6.5.patch"
"mailparser@3.6.9": "patches/mailparser@3.6.9.patch"
}
}
}

View File

@@ -21,4 +21,4 @@ index 3f9b44133766c04866ab2ab178c061f35dbf8f42..368ed6d94da4401909b7eddc87d18354
- this.attachment.checksum = this.hash.digest('hex');
this.attachment.size = this.byteCount;
done();
}
}

160
worker/pnpm-lock.yaml generated
View File

@@ -5,41 +5,41 @@ settings:
excludeLinksFromLockfile: false
patchedDependencies:
mailparser@3.6.5:
hash: ykuld7ytssxm3j6t6ehwmtonk4
path: patches/mailparser@3.6.5.patch
mailparser@3.6.9:
hash: vtv6mupuxeqjidadcgidi322su
path: patches/mailparser@3.6.9.patch
dependencies:
hono:
specifier: ^4.1.7
version: 4.1.7
specifier: ^4.2.2
version: 4.2.2
mailparser:
specifier: 3.6.5
version: 3.6.5(patch_hash=ykuld7ytssxm3j6t6ehwmtonk4)
specifier: ^3.6.9
version: 3.6.9(patch_hash=vtv6mupuxeqjidadcgidi322su)
mimetext:
specifier: ^3.0.24
version: 3.0.24
postal-mime:
specifier: ^1.1.0
version: 1.1.0
specifier: ^2.2.1
version: 2.2.1
devDependencies:
wrangler:
specifier: ^3.41.0
version: 3.41.0
specifier: ^3.48.0
version: 3.48.0
packages:
/@babel/runtime-corejs3@7.24.1:
resolution: {integrity: sha512-T9ko/35G+Bkl+win48GduaPlhSlOjjE5s1TeiEcD+QpxlLQnoEfb/nO/T+TQqkm+ipFwORn+rB8w14iJ/uD0bg==}
/@babel/runtime-corejs3@7.24.4:
resolution: {integrity: sha512-VOQOexSilscN24VEY810G/PqtpFvx/z6UqDIjIWbDe2368HhDLkYN5TYwaEz/+eRCUkhJ2WaNLLmQAlxzfWj4w==}
engines: {node: '>=6.9.0'}
dependencies:
core-js-pure: 3.36.1
regenerator-runtime: 0.14.1
dev: false
/@babel/runtime@7.24.1:
resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==}
/@babel/runtime@7.24.4:
resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.1
@@ -51,8 +51,8 @@ packages:
mime: 3.0.0
dev: true
/@cloudflare/workerd-darwin-64@1.20240320.1:
resolution: {integrity: sha512-ioG5k2M17xyiAlK/k3L21NZLMVeSHMjwlmGtZyCyzSLL5/zGINcgZ5yPLV0UuWiysw07/6Jjzm5Sx94hzMVybg==}
/@cloudflare/workerd-darwin-64@1.20240404.0:
resolution: {integrity: sha512-rc/ov3I9GwgKRtUnkShNW3TIoZEPHzExrMRNlHq1VpXQRBSchHdMw8meMn54+oqgxW1AKLmPWj/c0A7EnYAsIw==}
engines: {node: '>=16'}
cpu: [x64]
os: [darwin]
@@ -60,8 +60,8 @@ packages:
dev: true
optional: true
/@cloudflare/workerd-darwin-arm64@1.20240320.1:
resolution: {integrity: sha512-Ga6RDdnFEIsN4WuWsaP9bLGvK9K7pEIVoSIgmw6vweVlD8UK/a2MPGrsF1ogwdeCTCOMY8wUh9poL/Yu48IPpg==}
/@cloudflare/workerd-darwin-arm64@1.20240404.0:
resolution: {integrity: sha512-V9oPjeC2PYBCoAYnjbO2bsjT7PtzxfUHnh780FUi1r59Hwxd7FNlojwsIidA0nS/1WV5UKeJusIdrYlQbsketA==}
engines: {node: '>=16'}
cpu: [arm64]
os: [darwin]
@@ -69,8 +69,8 @@ packages:
dev: true
optional: true
/@cloudflare/workerd-linux-64@1.20240320.1:
resolution: {integrity: sha512-KFof5H8eU0NXv+pUAU7Lk/OLtOmfsioTJqu0v6kPL7QsTGsgzj5sEQNcQ8DONSze549Yflu5W00qpA2cPz9eWQ==}
/@cloudflare/workerd-linux-64@1.20240404.0:
resolution: {integrity: sha512-ndO7q6G2X8uYd5byGFzow4SWPqINQcmJ7pKKATNa+9vh/YMO0of2ihPntnm9uv577l8nRiAwRkHbnsWoEI33qQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [linux]
@@ -78,8 +78,8 @@ packages:
dev: true
optional: true
/@cloudflare/workerd-linux-arm64@1.20240320.1:
resolution: {integrity: sha512-t+kGc6dGdkKvVMGcHCPhlCsUZF5dj8xbAFvLB7DAJ8T79ys30rmY2Lu/C8vKlhjH9TJhbzgKmPaJ0wC/K4euvw==}
/@cloudflare/workerd-linux-arm64@1.20240404.0:
resolution: {integrity: sha512-hto5pjKYFqFu2Rvxnh84TzgDwalBRXQSwOVHltcgqo48en9TJDCN48ZtLj2G7QTGUOMW88h+nqdbj8+P7S/GXQ==}
engines: {node: '>=16'}
cpu: [arm64]
os: [linux]
@@ -87,8 +87,8 @@ packages:
dev: true
optional: true
/@cloudflare/workerd-windows-64@1.20240320.1:
resolution: {integrity: sha512-9xDylCOsuzWqGuANkuUByiJ5RHeMqgw37FiI7rn8I6zdGAc/alOB9B4Bh7B73WC2uEpFL+XCEjcHZ6NmsO4NaQ==}
/@cloudflare/workerd-windows-64@1.20240404.0:
resolution: {integrity: sha512-DpCLvNkOeFinKGJwv9qbyT7RLZ1168dhPx85IHSqAYVWZIszNSmNOkEDqklvoJoab01AqETrrEhwBdmjCA7qfA==}
engines: {node: '>=16'}
cpu: [x64]
os: [win32]
@@ -350,11 +350,11 @@ packages:
/@types/node-forge@1.3.11:
resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
dependencies:
'@types/node': 20.12.2
'@types/node': 20.12.5
dev: true
/@types/node@20.12.2:
resolution: {integrity: sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==}
/@types/node@20.12.5:
resolution: {integrity: sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==}
dependencies:
undici-types: 5.26.5
dev: true
@@ -585,8 +585,8 @@ packages:
hasBin: true
dev: false
/hono@4.1.7:
resolution: {integrity: sha512-Qa9/OM64d3we/COpxpJNT8p2IEvXbvRzp2eX4wf48eDvqoU3pBrnbY6zAF2rK878GxkkfCo6yipZXNsPiTrBMQ==}
/hono@4.2.2:
resolution: {integrity: sha512-mDmjBHF6uBNN3TASdAbDCFsN9FLbrlgXyFZkhLEkU7hUgk0+T9hcsUrL/nho4qV+Xk0RDHx7gop4Q1gelZZVRw==}
engines: {node: '>=16.0.0'}
dev: false
@@ -659,6 +659,10 @@ packages:
resolution: {integrity: sha512-l+nePcPbIG1fNlqMzrh68MLkX/gTxk/+vdvAb388Ssi7UuUN31MI44w4Yf33mM3Cm4xDfw48mdf3rkdHszLNew==}
dev: false
/libbase64@1.3.0:
resolution: {integrity: sha512-GgOXd0Eo6phYgh0DJtjQ2tO8dc0IVINtZJeARPeiIJqge+HdsWSuaDTe8ztQ7j/cONByDZ3zeB325AHiv5O0dg==}
dev: false
/libmime@5.2.0:
resolution: {integrity: sha512-X2U5Wx0YmK0rXFbk67ASMeqYIkZ6E5vY7pNWRKtnNzqjvdYYG8xtPDpCnuUEnPU9vlgNev+JoSrcaKSUaNvfsw==}
dependencies:
@@ -668,23 +672,27 @@ packages:
libqp: 2.0.1
dev: false
/libmime@5.2.1:
resolution: {integrity: sha512-A0z9O4+5q+ZTj7QwNe/Juy1KARNb4WaviO4mYeFC4b8dBT2EEqK2pkM+GC8MVnkOjqhl5nYQxRgnPYRRTNmuSQ==}
/libmime@5.3.4:
resolution: {integrity: sha512-TsqPdercr6DHrnoQx1F0nS2Y4yPT+fWuOjEP2rqzvV77hMYWomTe/rpm0u9JORQ/FavEXybAGcBJsQbLr9+hjA==}
dependencies:
encoding-japanese: 2.0.0
iconv-lite: 0.6.3
libbase64: 1.2.1
libqp: 2.0.1
libbase64: 1.3.0
libqp: 2.1.0
dev: false
/libqp@2.0.1:
resolution: {integrity: sha512-Ka0eC5LkF3IPNQHJmYBWljJsw0UvM6j+QdKRbWyCdTmYwvIDE6a7bCm0UkTAL/K+3KXK5qXT/ClcInU01OpdLg==}
dev: false
/linkify-it@4.0.1:
resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==}
/libqp@2.1.0:
resolution: {integrity: sha512-O6O6/fsG5jiUVbvdgT7YX3xY3uIadR6wEZ7+vy9u7PKHAlSEB6blvC1o5pHBjgsi95Uo0aiBBdkyFecj6jtb7A==}
dev: false
/linkify-it@5.0.0:
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
dependencies:
uc.micro: 1.0.6
uc.micro: 2.1.0
dev: false
/magic-string@0.25.9:
@@ -693,18 +701,19 @@ packages:
sourcemap-codec: 1.4.8
dev: true
/mailparser@3.6.5(patch_hash=ykuld7ytssxm3j6t6ehwmtonk4):
resolution: {integrity: sha512-nteTpF0Khm5JLOnt4sigmzNdUH/6mO7PZ4KEnvxf4mckyXYFFhrtAWZzbq/V5aQMH+049gA7ZjfLdh+QiX2Uqg==}
/mailparser@3.6.9(patch_hash=vtv6mupuxeqjidadcgidi322su):
resolution: {integrity: sha512-1fIDZlgN1NnuzmTSEUxkaViquXYkw5NbQehVc+kz55QRy98QgLdTtRSKv289Jy4NrCiDchRx6zAijB4HrPsvkA==}
dependencies:
encoding-japanese: 2.0.0
he: 1.2.0
html-to-text: 9.0.5
iconv-lite: 0.6.3
libmime: 5.2.1
linkify-it: 4.0.1
libmime: 5.3.4
linkify-it: 5.0.0
mailsplit: 5.4.0
nodemailer: 6.9.3
tlds: 1.240.0
nodemailer: 6.9.11
punycode: 2.3.1
tlds: 1.250.0
dev: false
patched: true
@@ -737,14 +746,14 @@ packages:
/mimetext@3.0.24:
resolution: {integrity: sha512-UdG1KVfcxeEfo6el91lzFG2WLLTm8DxSK/rosxx5H2Pjla50+DSsjTgr9BRAfAkbQWaxvzcaTO+bHK5ZrdKdfA==}
dependencies:
'@babel/runtime': 7.24.1
'@babel/runtime-corejs3': 7.24.1
'@babel/runtime': 7.24.4
'@babel/runtime-corejs3': 7.24.4
js-base64: 3.7.7
mime-types: 2.1.35
dev: false
/miniflare@3.20240320.1:
resolution: {integrity: sha512-MoHhT+XaFPQtplNIkJc5NtWOi5u/7VkmBUWyyxDH7ehHk4xRT2PDkMCvVOUIcaqbHNIBzigyoYegdYmZcYtdCg==}
/miniflare@3.20240404.0:
resolution: {integrity: sha512-+FOTcztPMW3akmucX4vE0PWMNvP4JBwl4s9ieA84fcOaDtTbtfU1rHXpcacj16klpUpvSnD6xd8Sjsn6SJXPfg==}
engines: {node: '>=16.13'}
hasBin: true
dependencies:
@@ -755,8 +764,8 @@ packages:
exit-hook: 2.2.1
glob-to-regexp: 0.4.1
stoppable: 1.1.0
undici: 5.28.3
workerd: 1.20240320.1
undici: 5.28.4
workerd: 1.20240404.0
ws: 8.16.0
youch: 3.3.3
zod: 3.22.4
@@ -786,8 +795,8 @@ packages:
engines: {node: '>= 6.13.0'}
dev: true
/nodemailer@6.9.3:
resolution: {integrity: sha512-fy9v3NgTzBngrMFkDsKEj0r02U7jm6XfC3b52eoNV+GCrGj+s8pt5OqhiJdWKuw51zCTdiNR/IUD1z33LIIGpg==}
/nodemailer@6.9.11:
resolution: {integrity: sha512-UiAkgiERuG94kl/3bKfE8o10epvDnl0vokNEtZDPTq9BWzIl6EFT9336SbIT4oaTBD8NmmUTLsQyXHV82eXSWg==}
engines: {node: '>=6.0.0'}
dev: false
@@ -807,8 +816,8 @@ packages:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
dev: true
/path-to-regexp@6.2.1:
resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==}
/path-to-regexp@6.2.2:
resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==}
dev: true
/peberminta@0.9.0:
@@ -820,14 +829,19 @@ packages:
engines: {node: '>=8.6'}
dev: true
/postal-mime@1.1.0:
resolution: {integrity: sha512-IyYhoZpCq/I9l9om5soJ5Ch5vsS76EGu/tn7mHQGiAEmIKf2uvr3TdiYTB56FmD5bOm78eYjCPryM+0GuJcMJg==}
/postal-mime@2.2.1:
resolution: {integrity: sha512-YqGeFmiKXUxv32hOy2t47VX67mYydC47CTCc7+HKd3xlNKPDhivnO/ZovN3iWXxvyyL2TRTxusuuq3etWeCKsw==}
dev: false
/printable-characters@1.0.42:
resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==}
dev: true
/punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
dev: false
/readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
@@ -919,8 +933,8 @@ packages:
engines: {node: '>= 0.4'}
dev: true
/tlds@1.240.0:
resolution: {integrity: sha512-1OYJQenswGZSOdRw7Bql5Qu7uf75b+F3HFBXbqnG/ifHa0fev1XcG+3pJf3pA/KC6RtHQzfKgIf1vkMlMG7mtQ==}
/tlds@1.250.0:
resolution: {integrity: sha512-rWsBfFCWKrjM/o2Q1TTUeYQv6tHSd/umUutDjVs6taTuEgRDIreVYIBgWRWW4ot7jp6n0UVUuxhTLWBtUmPu/w==}
hasBin: true
dev: false
@@ -935,40 +949,40 @@ packages:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
dev: true
/uc.micro@1.0.6:
resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
/uc.micro@2.1.0:
resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
dev: false
/undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
dev: true
/undici@5.28.3:
resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==}
/undici@5.28.4:
resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==}
engines: {node: '>=14.0'}
dependencies:
'@fastify/busboy': 2.1.1
dev: true
/workerd@1.20240320.1:
resolution: {integrity: sha512-nuavAGGjh0qqM6RF5zxTHyUwEqdLCHchodbrpbh/xlJpFGnJVY5C1YgSi2S9aLkJJoa0/25Ta/+EzXEbApA/3w==}
/workerd@1.20240404.0:
resolution: {integrity: sha512-U4tfnvBcPMsv7pmRGuF0J5UnoZi6tbc64tXNfyijI74r6w6Vlb2+a6eibdQL8g0g46+4vjuTKME9G5RvSvdc8g==}
engines: {node: '>=16'}
hasBin: true
requiresBuild: true
optionalDependencies:
'@cloudflare/workerd-darwin-64': 1.20240320.1
'@cloudflare/workerd-darwin-arm64': 1.20240320.1
'@cloudflare/workerd-linux-64': 1.20240320.1
'@cloudflare/workerd-linux-arm64': 1.20240320.1
'@cloudflare/workerd-windows-64': 1.20240320.1
'@cloudflare/workerd-darwin-64': 1.20240404.0
'@cloudflare/workerd-darwin-arm64': 1.20240404.0
'@cloudflare/workerd-linux-64': 1.20240404.0
'@cloudflare/workerd-linux-arm64': 1.20240404.0
'@cloudflare/workerd-windows-64': 1.20240404.0
dev: true
/wrangler@3.41.0:
resolution: {integrity: sha512-iPFHF+88ZchnoZaQnq69Qkcpt0/LwkD44FzTxHWGzuBiNFwWwaNZ5zJ1G7Ga4nyipwcgtj+ykGlB/Amdgmut7w==}
/wrangler@3.48.0:
resolution: {integrity: sha512-Wv7JS6FyX1j9HkaM6WL3fmTzBMAYc4hPSyZCuxuH55hkJDX/7ts+YAgsaN1U8rKoDrV3FVSgBfI9TyqP9iuM8Q==}
engines: {node: '>=16.17.0'}
hasBin: true
peerDependencies:
'@cloudflare/workers-types': ^4.20240320.1
'@cloudflare/workers-types': ^4.20240404.0
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
@@ -979,9 +993,9 @@ packages:
blake3-wasm: 2.1.5
chokidar: 3.6.0
esbuild: 0.17.19
miniflare: 3.20240320.1
miniflare: 3.20240404.0
nanoid: 3.3.7
path-to-regexp: 6.2.1
path-to-regexp: 6.2.2
resolve: 1.22.8
resolve.exports: 2.0.2
selfsigned: 2.4.1

View File

@@ -1,8 +1,7 @@
import { createMimeMessage } from "mimetext";
import { EmailMessage } from "cloudflare:email";
const PostalMime = require("postal-mime");
const simpleParser = require('mailparser').simpleParser;
import { simpleParser } from 'mailparser';
import PostalMime from 'postal-mime';
global.setImmediate = (callback) => callback();
async function email(message, env, ctx) {
@@ -22,20 +21,22 @@ async function email(message, env, ctx) {
}
rawEmail += decoder.decode(value);
}
const message_id = message.headers.get("Message-ID");
let parsedEmail = {};
try {
parsedEmail = await simpleParser(rawEmail)
} catch (error) {
console.log(error)
// todo fix this
if (!message.from.endsWith("@mega.nz")) {
try {
parsedEmail = await simpleParser(rawEmail)
} catch (error) {
console.log(error)
}
}
if (!parsedEmail.html && !parsedEmail.textAsHtml && !parsedEmail.text) {
console.log("Failed parse email, try postal-mime");
const parser = new PostalMime.default();
parsedEmail = await parser.parse(rawEmail);
parsedEmail = await PostalMime.parse(rawEmail);
}
const message_id = message.headers.get("Message-ID");
// process email
const { success } = await env.DB.prepare(

View File

@@ -175,7 +175,6 @@ api.get('/api/new_address', async (c) => {
address_id = await c.env.DB.prepare(
`SELECT id FROM address where name = ?`
).bind(name + "@" + domain).first("id");
address_id = results.id;
} catch (error) {
console.log(error);
}