Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lambda Invoked Automated Mailer

Overview

Another SES Lambda function to help you clutter someone elses inbox but do so utilizing the latest in AWS security. Of course liam is using the V2 encryption client but were it differs is actually using the ephemeral keys in the V2 call headers to decrypt your mails just before forwarding. Maximizing security while minimizing API calls, saving you on everything, your welcome.

Configuration

Modify the DEFAULT_CONFIG as needed for your environment:

DEFAULT_CONFIG={allow_plus_sign: true,email_bucket: 'your-email-bucket-name',email_key_prefix: 'email-prefix/',from_email: 'noreply@yourdomain.com',forward_mapping: {'info@yourdomain.com'=>['contact@anotherdomain.com'],'@yourdomain.com'=>['default@anotherdomain.com']},headers: ['Message-ID','Date','Subject'],kms: 'your-kms-key-id',region: 'us-east-1',subject_prefix: '[Forwarded]',tags: [{name: 'Project',value: 'Redacted'}]}

Parameters:

`allow_plus_sign` - To filter out or not filter out '+alias' syntax in email addresses before mapping, that is the question.
`email_bucket` - S3 bucket name where incoming emails are stored.
`email_key_prefix` - Object key prefix for stored emails in S3.
`from_email` - Default 'From' email address for forwarded emails.
`forward_mapping` - A hash mapping of domain or domain addresses to forwarded recipient addresses.
`headers` - Array of email headers that should be preserved during forwarding.
`kms` - Key Management Service (KMS) key ID for email encryption.
`region` - The AWS region your S3 and SES services are located in.
`subject_prefix` - A string prefix you feel is important enough to prepend to all forwarded email subjects.
`tags` - don't make me explain tags to you.

Installation

Ensure AWS CLI is configured with appropriate permissions. (optional) Create required S3 bucket and SES setup. Package and deploy the Lambda function through AWS CLI or AWS Management Console. Configure triggers to invoke the Lambda function on incoming email events.

Usage

Requires an SES event payload and fields like mail and receipt:

  1. Incoming SES event triggers liam.
  2. Liam fetches encrypted blob you call mail from the specified S3 bucket.
  3. Mail headers are processed and recipients are mapped based on configuration.
  4. Altered mail is forwarded to new recipients via SES.

Error Handling

Error handling in the code logs issues and halts processing when errors occur. It is advisable to set up Dead Letter Queues (DLQs) to capture failed processing attempts for further investigation.

Logging

Logging is carried out via AWS CloudWatch, with detailed logs for each step of the processing. Make sure to check CloudWatch logs for debugging errors or to track the function execution history.

Security

The function uses Aws::S3::EncryptionV2::Client with AES-GCM encryption and KMS for key management to securely handle your emails.

Contributions

For contributions, improvements, or suggestions please open a pull request or issue.

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lambda Invoked Automated Mailer

Overview

Another SES Lambda function to help you clutter someone elses inbox but do so utilizing the latest in AWS security. Of course liam is using the V2 encryption client but were it differs is actually using the ephemeral keys in the V2 call headers to decrypt your mails just before forwarding. Maximizing security while minimizing API calls, saving you on everything, your welcome.

Configuration

Modify the DEFAULT_CONFIG as needed for your environment:

DEFAULT_CONFIG={allow_plus_sign: true,email_bucket: 'your-email-bucket-name',email_key_prefix: 'email-prefix/',from_email: 'noreply@yourdomain.com',forward_mapping: {'info@yourdomain.com'=>['contact@anotherdomain.com'],'@yourdomain.com'=>['default@anotherdomain.com']},headers: ['Message-ID','Date','Subject'],kms: 'your-kms-key-id',region: 'us-east-1',subject_prefix: '[Forwarded]',tags: [{name: 'Project',value: 'Redacted'}]}

Parameters:

`allow_plus_sign` - To filter out or not filter out '+alias' syntax in email addresses before mapping, that is the question.
`email_bucket` - S3 bucket name where incoming emails are stored.
`email_key_prefix` - Object key prefix for stored emails in S3.
`from_email` - Default 'From' email address for forwarded emails.
`forward_mapping` - A hash mapping of domain or domain addresses to forwarded recipient addresses.
`headers` - Array of email headers that should be preserved during forwarding.
`kms` - Key Management Service (KMS) key ID for email encryption.
`region` - The AWS region your S3 and SES services are located in.
`subject_prefix` - A string prefix you feel is important enough to prepend to all forwarded email subjects.
`tags` - don't make me explain tags to you.

Installation

Ensure AWS CLI is configured with appropriate permissions. (optional) Create required S3 bucket and SES setup. Package and deploy the Lambda function through AWS CLI or AWS Management Console. Configure triggers to invoke the Lambda function on incoming email events.

Usage

Requires an SES event payload and fields like mail and receipt:

  1. Incoming SES event triggers liam.
  2. Liam fetches encrypted blob you call mail from the specified S3 bucket.
  3. Mail headers are processed and recipients are mapped based on configuration.
  4. Altered mail is forwarded to new recipients via SES.

Error Handling

Error handling in the code logs issues and halts processing when errors occur. It is advisable to set up Dead Letter Queues (DLQs) to capture failed processing attempts for further investigation.

Logging

Logging is carried out via AWS CloudWatch, with detailed logs for each step of the processing. Make sure to check CloudWatch logs for debugging errors or to track the function execution history.

Security

The function uses Aws::S3::EncryptionV2::Client with AES-GCM encryption and KMS for key management to securely handle your emails.

Contributions

For contributions, improvements, or suggestions please open a pull request or issue.

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lambda Invoked Automated Mailer

Overview

Another SES Lambda function to help you clutter someone elses inbox but do so utilizing the latest in AWS security. Of course liam is using the V2 encryption client but were it differs is actually using the ephemeral keys in the V2 call headers to decrypt your mails just before forwarding. Maximizing security while minimizing API calls, saving you on everything, your welcome.

Configuration

Modify the DEFAULT_CONFIG as needed for your environment:

DEFAULT_CONFIG={allow_plus_sign: true,email_bucket: 'your-email-bucket-name',email_key_prefix: 'email-prefix/',from_email: 'noreply@yourdomain.com',forward_mapping: {'info@yourdomain.com'=>['contact@anotherdomain.com'],'@yourdomain.com'=>['default@anotherdomain.com']},headers: ['Message-ID','Date','Subject'],kms: 'your-kms-key-id',region: 'us-east-1',subject_prefix: '[Forwarded]',tags: [{name: 'Project',value: 'Redacted'}]}

Parameters:

`allow_plus_sign` - To filter out or not filter out '+alias' syntax in email addresses before mapping, that is the question.
`email_bucket` - S3 bucket name where incoming emails are stored.
`email_key_prefix` - Object key prefix for stored emails in S3.
`from_email` - Default 'From' email address for forwarded emails.
`forward_mapping` - A hash mapping of domain or domain addresses to forwarded recipient addresses.
`headers` - Array of email headers that should be preserved during forwarding.
`kms` - Key Management Service (KMS) key ID for email encryption.
`region` - The AWS region your S3 and SES services are located in.
`subject_prefix` - A string prefix you feel is important enough to prepend to all forwarded email subjects.
`tags` - don't make me explain tags to you.

Installation

Ensure AWS CLI is configured with appropriate permissions. (optional) Create required S3 bucket and SES setup. Package and deploy the Lambda function through AWS CLI or AWS Management Console. Configure triggers to invoke the Lambda function on incoming email events.

Usage

Requires an SES event payload and fields like mail and receipt:

  1. Incoming SES event triggers liam.
  2. Liam fetches encrypted blob you call mail from the specified S3 bucket.
  3. Mail headers are processed and recipients are mapped based on configuration.
  4. Altered mail is forwarded to new recipients via SES.

Error Handling

Error handling in the code logs issues and halts processing when errors occur. It is advisable to set up Dead Letter Queues (DLQs) to capture failed processing attempts for further investigation.

Logging

Logging is carried out via AWS CloudWatch, with detailed logs for each step of the processing. Make sure to check CloudWatch logs for debugging errors or to track the function execution history.

Security

The function uses Aws::S3::EncryptionV2::Client with AES-GCM encryption and KMS for key management to securely handle your emails.

Contributions

For contributions, improvements, or suggestions please open a pull request or issue.

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lambda Invoked Automated Mailer

Overview

Another SES Lambda function to help you clutter someone elses inbox but do so utilizing the latest in AWS security. Of course liam is using the V2 encryption client but were it differs is actually using the ephemeral keys in the V2 call headers to decrypt your mails just before forwarding. Maximizing security while minimizing API calls, saving you on everything, your welcome.

Configuration

Modify the DEFAULT_CONFIG as needed for your environment:

DEFAULT_CONFIG={allow_plus_sign: true,email_bucket: 'your-email-bucket-name',email_key_prefix: 'email-prefix/',from_email: 'noreply@yourdomain.com',forward_mapping: {'info@yourdomain.com'=>['contact@anotherdomain.com'],'@yourdomain.com'=>['default@anotherdomain.com']},headers: ['Message-ID','Date','Subject'],kms: 'your-kms-key-id',region: 'us-east-1',subject_prefix: '[Forwarded]',tags: [{name: 'Project',value: 'Redacted'}]}

Parameters:

`allow_plus_sign` - To filter out or not filter out '+alias' syntax in email addresses before mapping, that is the question.
`email_bucket` - S3 bucket name where incoming emails are stored.
`email_key_prefix` - Object key prefix for stored emails in S3.
`from_email` - Default 'From' email address for forwarded emails.
`forward_mapping` - A hash mapping of domain or domain addresses to forwarded recipient addresses.
`headers` - Array of email headers that should be preserved during forwarding.
`kms` - Key Management Service (KMS) key ID for email encryption.
`region` - The AWS region your S3 and SES services are located in.
`subject_prefix` - A string prefix you feel is important enough to prepend to all forwarded email subjects.
`tags` - don't make me explain tags to you.

Installation

Ensure AWS CLI is configured with appropriate permissions. (optional) Create required S3 bucket and SES setup. Package and deploy the Lambda function through AWS CLI or AWS Management Console. Configure triggers to invoke the Lambda function on incoming email events.

Usage

Requires an SES event payload and fields like mail and receipt:

  1. Incoming SES event triggers liam.
  2. Liam fetches encrypted blob you call mail from the specified S3 bucket.
  3. Mail headers are processed and recipients are mapped based on configuration.
  4. Altered mail is forwarded to new recipients via SES.

Error Handling

Error handling in the code logs issues and halts processing when errors occur. It is advisable to set up Dead Letter Queues (DLQs) to capture failed processing attempts for further investigation.

Logging

Logging is carried out via AWS CloudWatch, with detailed logs for each step of the processing. Make sure to check CloudWatch logs for debugging errors or to track the function execution history.

Security

The function uses Aws::S3::EncryptionV2::Client with AES-GCM encryption and KMS for key management to securely handle your emails.

Contributions

For contributions, improvements, or suggestions please open a pull request or issue.

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lambda Invoked Automated Mailer

Overview

Another SES Lambda function to help you clutter someone elses inbox but do so utilizing the latest in AWS security. Of course liam is using the V2 encryption client but were it differs is actually using the ephemeral keys in the V2 call headers to decrypt your mails just before forwarding. Maximizing security while minimizing API calls, saving you on everything, your welcome.

Configuration

Modify the DEFAULT_CONFIG as needed for your environment:

DEFAULT_CONFIG={allow_plus_sign: true,email_bucket: 'your-email-bucket-name',email_key_prefix: 'email-prefix/',from_email: 'noreply@yourdomain.com',forward_mapping: {'info@yourdomain.com'=>['contact@anotherdomain.com'],'@yourdomain.com'=>['default@anotherdomain.com']},headers: ['Message-ID','Date','Subject'],kms: 'your-kms-key-id',region: 'us-east-1',subject_prefix: '[Forwarded]',tags: [{name: 'Project',value: 'Redacted'}]}

Parameters:

`allow_plus_sign` - To filter out or not filter out '+alias' syntax in email addresses before mapping, that is the question.
`email_bucket` - S3 bucket name where incoming emails are stored.
`email_key_prefix` - Object key prefix for stored emails in S3.
`from_email` - Default 'From' email address for forwarded emails.
`forward_mapping` - A hash mapping of domain or domain addresses to forwarded recipient addresses.
`headers` - Array of email headers that should be preserved during forwarding.
`kms` - Key Management Service (KMS) key ID for email encryption.
`region` - The AWS region your S3 and SES services are located in.
`subject_prefix` - A string prefix you feel is important enough to prepend to all forwarded email subjects.
`tags` - don't make me explain tags to you.

Installation

Ensure AWS CLI is configured with appropriate permissions. (optional) Create required S3 bucket and SES setup. Package and deploy the Lambda function through AWS CLI or AWS Management Console. Configure triggers to invoke the Lambda function on incoming email events.

Usage

Requires an SES event payload and fields like mail and receipt:

  1. Incoming SES event triggers liam.
  2. Liam fetches encrypted blob you call mail from the specified S3 bucket.
  3. Mail headers are processed and recipients are mapped based on configuration.
  4. Altered mail is forwarded to new recipients via SES.

Error Handling

Error handling in the code logs issues and halts processing when errors occur. It is advisable to set up Dead Letter Queues (DLQs) to capture failed processing attempts for further investigation.

Logging

Logging is carried out via AWS CloudWatch, with detailed logs for each step of the processing. Make sure to check CloudWatch logs for debugging errors or to track the function execution history.

Security

The function uses Aws::S3::EncryptionV2::Client with AES-GCM encryption and KMS for key management to securely handle your emails.

Contributions

For contributions, improvements, or suggestions please open a pull request or issue.

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lambda Invoked Automated Mailer

Overview

Another SES Lambda function to help you clutter someone elses inbox but do so utilizing the latest in AWS security. Of course liam is using the V2 encryption client but were it differs is actually using the ephemeral keys in the V2 call headers to decrypt your mails just before forwarding. Maximizing security while minimizing API calls, saving you on everything, your welcome.

Configuration

Modify the DEFAULT_CONFIG as needed for your environment:

DEFAULT_CONFIG={allow_plus_sign: true,email_bucket: 'your-email-bucket-name',email_key_prefix: 'email-prefix/',from_email: 'noreply@yourdomain.com',forward_mapping: {'info@yourdomain.com'=>['contact@anotherdomain.com'],'@yourdomain.com'=>['default@anotherdomain.com']},headers: ['Message-ID','Date','Subject'],kms: 'your-kms-key-id',region: 'us-east-1',subject_prefix: '[Forwarded]',tags: [{name: 'Project',value: 'Redacted'}]}

Parameters:

`allow_plus_sign` - To filter out or not filter out '+alias' syntax in email addresses before mapping, that is the question.
`email_bucket` - S3 bucket name where incoming emails are stored.
`email_key_prefix` - Object key prefix for stored emails in S3.
`from_email` - Default 'From' email address for forwarded emails.
`forward_mapping` - A hash mapping of domain or domain addresses to forwarded recipient addresses.
`headers` - Array of email headers that should be preserved during forwarding.
`kms` - Key Management Service (KMS) key ID for email encryption.
`region` - The AWS region your S3 and SES services are located in.
`subject_prefix` - A string prefix you feel is important enough to prepend to all forwarded email subjects.
`tags` - don't make me explain tags to you.

Installation

Ensure AWS CLI is configured with appropriate permissions. (optional) Create required S3 bucket and SES setup. Package and deploy the Lambda function through AWS CLI or AWS Management Console. Configure triggers to invoke the Lambda function on incoming email events.

Usage

Requires an SES event payload and fields like mail and receipt:

  1. Incoming SES event triggers liam.
  2. Liam fetches encrypted blob you call mail from the specified S3 bucket.
  3. Mail headers are processed and recipients are mapped based on configuration.
  4. Altered mail is forwarded to new recipients via SES.

Error Handling

Error handling in the code logs issues and halts processing when errors occur. It is advisable to set up Dead Letter Queues (DLQs) to capture failed processing attempts for further investigation.

Logging

Logging is carried out via AWS CloudWatch, with detailed logs for each step of the processing. Make sure to check CloudWatch logs for debugging errors or to track the function execution history.

Security

The function uses Aws::S3::EncryptionV2::Client with AES-GCM encryption and KMS for key management to securely handle your emails.

Contributions

For contributions, improvements, or suggestions please open a pull request or issue.

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lambda Invoked Automated Mailer

Overview

Another SES Lambda function to help you clutter someone elses inbox but do so utilizing the latest in AWS security. Of course liam is using the V2 encryption client but were it differs is actually using the ephemeral keys in the V2 call headers to decrypt your mails just before forwarding. Maximizing security while minimizing API calls, saving you on everything, your welcome.

Configuration

Modify the DEFAULT_CONFIG as needed for your environment:

DEFAULT_CONFIG={allow_plus_sign: true,email_bucket: 'your-email-bucket-name',email_key_prefix: 'email-prefix/',from_email: 'noreply@yourdomain.com',forward_mapping: {'info@yourdomain.com'=>['contact@anotherdomain.com'],'@yourdomain.com'=>['default@anotherdomain.com']},headers: ['Message-ID','Date','Subject'],kms: 'your-kms-key-id',region: 'us-east-1',subject_prefix: '[Forwarded]',tags: [{name: 'Project',value: 'Redacted'}]}

Parameters:

`allow_plus_sign` - To filter out or not filter out '+alias' syntax in email addresses before mapping, that is the question.
`email_bucket` - S3 bucket name where incoming emails are stored.
`email_key_prefix` - Object key prefix for stored emails in S3.
`from_email` - Default 'From' email address for forwarded emails.
`forward_mapping` - A hash mapping of domain or domain addresses to forwarded recipient addresses.
`headers` - Array of email headers that should be preserved during forwarding.
`kms` - Key Management Service (KMS) key ID for email encryption.
`region` - The AWS region your S3 and SES services are located in.
`subject_prefix` - A string prefix you feel is important enough to prepend to all forwarded email subjects.
`tags` - don't make me explain tags to you.

Installation

Ensure AWS CLI is configured with appropriate permissions. (optional) Create required S3 bucket and SES setup. Package and deploy the Lambda function through AWS CLI or AWS Management Console. Configure triggers to invoke the Lambda function on incoming email events.

Usage

Requires an SES event payload and fields like mail and receipt:

  1. Incoming SES event triggers liam.
  2. Liam fetches encrypted blob you call mail from the specified S3 bucket.
  3. Mail headers are processed and recipients are mapped based on configuration.
  4. Altered mail is forwarded to new recipients via SES.

Error Handling

Error handling in the code logs issues and halts processing when errors occur. It is advisable to set up Dead Letter Queues (DLQs) to capture failed processing attempts for further investigation.

Logging

Logging is carried out via AWS CloudWatch, with detailed logs for each step of the processing. Make sure to check CloudWatch logs for debugging errors or to track the function execution history.

Security

The function uses Aws::S3::EncryptionV2::Client with AES-GCM encryption and KMS for key management to securely handle your emails.

Contributions

For contributions, improvements, or suggestions please open a pull request or issue.

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Lambda Invoked Automated Mailer

Overview

Another SES Lambda function to help you clutter someone elses inbox but do so utilizing the latest in AWS security. Of course liam is using the V2 encryption client but were it differs is actually using the ephemeral keys in the V2 call headers to decrypt your mails just before forwarding. Maximizing security while minimizing API calls, saving you on everything, your welcome.

Configuration

Modify the DEFAULT_CONFIG as needed for your environment:

DEFAULT_CONFIG={allow_plus_sign: true,email_bucket: 'your-email-bucket-name',email_key_prefix: 'email-prefix/',from_email: 'noreply@yourdomain.com',forward_mapping: {'info@yourdomain.com'=>['contact@anotherdomain.com'],'@yourdomain.com'=>['default@anotherdomain.com']},headers: ['Message-ID','Date','Subject'],kms: 'your-kms-key-id',region: 'us-east-1',subject_prefix: '[Forwarded]',tags: [{name: 'Project',value: 'Redacted'}]}

Parameters:

`allow_plus_sign` - To filter out or not filter out '+alias' syntax in email addresses before mapping, that is the question.
`email_bucket` - S3 bucket name where incoming emails are stored.
`email_key_prefix` - Object key prefix for stored emails in S3.
`from_email` - Default 'From' email address for forwarded emails.
`forward_mapping` - A hash mapping of domain or domain addresses to forwarded recipient addresses.
`headers` - Array of email headers that should be preserved during forwarding.
`kms` - Key Management Service (KMS) key ID for email encryption.
`region` - The AWS region your S3 and SES services are located in.
`subject_prefix` - A string prefix you feel is important enough to prepend to all forwarded email subjects.
`tags` - don't make me explain tags to you.

Installation

Ensure AWS CLI is configured with appropriate permissions. (optional) Create required S3 bucket and SES setup. Package and deploy the Lambda function through AWS CLI or AWS Management Console. Configure triggers to invoke the Lambda function on incoming email events.

Usage

Requires an SES event payload and fields like mail and receipt:

  1. Incoming SES event triggers liam.
  2. Liam fetches encrypted blob you call mail from the specified S3 bucket.
  3. Mail headers are processed and recipients are mapped based on configuration.
  4. Altered mail is forwarded to new recipients via SES.

Error Handling

Error handling in the code logs issues and halts processing when errors occur. It is advisable to set up Dead Letter Queues (DLQs) to capture failed processing attempts for further investigation.

Logging

Logging is carried out via AWS CloudWatch, with detailed logs for each step of the processing. Make sure to check CloudWatch logs for debugging errors or to track the function execution history.

Security

The function uses Aws::S3::EncryptionV2::Client with AES-GCM encryption and KMS for key management to securely handle your emails.

Contributions

For contributions, improvements, or suggestions please open a pull request or issue.

Releases

Packages

Contributors

Languages