Skip to content

Instantly share code, notes, and snippets.

@robsonsobral
robsonsobral / _headers
Last active August 10, 2023 21:08
Netlify headers
/*
# Only connect to this site and subdomains via HTTPS for the next one year
Strict-Transport-Security: max-age=31536000; includeSubDomains
# Block site from being framed with X-Frame-Options and CSP
Content-Security-Policy: frame-ancestors 'self'
# X-Frame-Options tells the browser whether you want to allow your site to be framed or not. By preventing a browser from framing your site you can defend against attacks like clickjacking.
X-Frame-Options: SAMEORIGIN
import isSelectorValid from './isSelectorValid';
export default (param) => {
switch (true) {
case isSelectorValid(param):
return document.querySelectorAll(param);
case param instanceof HTMLElement:
return [param];
case param instanceof NodeList:
case param instanceof HTMLCollection:
const queryCheck = (s) => document.createDocumentFragment().querySelector(s);
export default function isSelectorValid(selector) {
if (typeof selector !== 'string') return false;
try { queryCheck(selector); } catch { return false; }
return true;
}
function getLabelTextFromField(formElement) {
return formElement.ariaLabel
|| formElement.labels?.[0]?.textContent;
}
#!/bin/bash
# Location of the nginx config file that contains the CloudFlare IP addresses.
CF_NGINX_CONFIG="/etc/nginx/cloudflare"
# The URLs with the actual IP addresses used by CloudFlare.
CF_URL_IP4="https://www.cloudflare.com/ips-v4"
CF_URL_IP6="https://www.cloudflare.com/ips-v6"
# Temporary files.
CF_TEMP_IP4="/tmp/cloudflare-ips-v4.txt"
CF_TEMP_IP6="/tmp/cloudflare-ips-v6.txt"
# Download the files.
### Keybase proof
I hereby claim:
* I am robsonsobral on github.
* I am sobral (https://keybase.io/sobral) on keybase.
* I have a public key ASAkt8uL-f9T3CK-tZOXvoDrYwLll6Numf_mDlhuli_s9go
To claim this, I am signing this object:
@robsonsobral
robsonsobral / meta-tags.html
Created May 23, 2020 23:20 — forked from benwo/meta-tags.html
Standard meta tags and meta image tags (and sizes).
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/Organization" lang="en">
<head>
<!-- Settings -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Search Engines -->
@robsonsobral
robsonsobral / cloudflare.sh
Created April 25, 2020 03:29 — forked from Manouchehri/cloudflare.sh
Allow CloudFlare only
# Source:
# https://www.cloudflare.com/ips
# https://support.cloudflare.com/hc/en-us/articles/200169166-How-do-I-whitelist-CloudFlare-s-IP-addresses-in-iptables-
for i in `curl https://www.cloudflare.com/ips-v4`; do iptables -I INPUT -p tcp -m multiport --dports http,https -s $i -j ACCEPT; done
for i in `curl https://www.cloudflare.com/ips-v6`; do ip6tables -I INPUT -p tcp -m multiport --dports http,https -s $i -j ACCEPT; done
# Avoid racking up billing/attacks
# WARNING: If you get attacked and CloudFlare drops you, your site(s) will be unreachable.
iptables -A INPUT -p tcp -m multiport --dports http,https -j DROP
@robsonsobral
robsonsobral / cloudflare-ip.sh
Created April 25, 2020 03:29 — forked from jschpp/cloudflare-ip.sh
script to add all cloudflare IPs to iptables
#!/bin/sh
exec > /var/log/cloudflare.log 2>&1
set -x
for ip in $(curl -s https://www.cloudflare.com/ips-v4); do /usr/sbin/iptables -I INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT; done
for ip in $(curl -s https://www.cloudflare.com/ips-v6); do /usr/sbin/ip6tables -I INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT; done
@robsonsobral
robsonsobral / paste.js
Created December 4, 2019 13:34 — forked from cesarfigueroa/paste.js
Paste onto a [contenteditable] element as plain text
document.querySelector('[contenteditable]').addEventListener('paste', function (event) {
event.preventDefault();
document.execCommand('inserttext', false, event.clipboardData.getData('text/plain'));
});