gitextract_p3pz680y/ ├── .github/ │ ├── ISSUE_TEMPLATE.md │ └── workflows/ │ └── streisand.yml ├── .gitignore ├── Advanced installation.md ├── CONTRIBUTING.md ├── Features.md ├── Installation.md ├── LICENSE ├── README-chs.md ├── README-fr.md ├── README-ru.md ├── README.md ├── Services.md ├── Vagrantfile ├── Vagrantfile.remotetest ├── ansible.cfg ├── deploy/ │ ├── streisand-existing-cloud-server.sh │ ├── streisand-local.sh │ └── streisand-new-cloud-server.sh ├── documentation/ │ ├── AWS-fr.md │ ├── AWS.md │ ├── AZURE-fr.md │ ├── AZURE.md │ ├── SOURCES.md │ ├── certificates.md │ ├── localization_howto.md │ ├── modular_roles.md │ └── testing.md ├── global_vars/ │ ├── default-site.yml │ ├── globals.yml │ ├── integration/ │ │ └── test-site.yml │ └── noninteractive/ │ ├── amazon-site.yml │ ├── azure-site.yml │ ├── digitalocean-site.yml │ ├── google-site.yml │ ├── linode-site.yml │ ├── local-site.yml │ └── rackspace-site.yml ├── inventories/ │ ├── inventory │ └── inventory-local-provision ├── library/ │ └── digital_ocean_droplet.py ├── playbooks/ │ ├── amazon.yml │ ├── azure.yml │ ├── cloud-status.yml │ ├── customize.yml │ ├── digitalocean.yml │ ├── ec2-metadata-instance.yml │ ├── existing-server.yml │ ├── google.yml │ ├── group_vars/ │ │ └── all │ ├── lets-encrypt.yml │ ├── linode.yml │ ├── localhost.yml │ ├── provider-detect.yml │ ├── python.yml │ ├── rackspace.yml │ ├── roles/ │ │ ├── ad-blocking/ │ │ │ ├── files/ │ │ │ │ ├── download-blocklists │ │ │ │ ├── download-blocklists.service │ │ │ │ ├── download-blocklists.timer │ │ │ │ ├── transform-domain-list │ │ │ │ └── transform-host-list │ │ │ └── tasks/ │ │ │ └── main.yml │ │ ├── azure-security-group/ │ │ │ ├── meta/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── certificates/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ ├── ca-server.yml │ │ │ │ ├── client.yml │ │ │ │ ├── main.yml │ │ │ │ └── pkcs.yml │ │ │ ├── templates/ │ │ │ │ ├── allowed_vpn_certs.j2 │ │ │ │ └── openssl.cnf.j2 │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── cloudflared/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── files/ │ │ │ │ └── cloudflared.service │ │ │ ├── handlers/ │ │ │ │ └── main.yml │ │ │ ├── meta/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ ├── install_binary.yml │ │ │ │ ├── install_package.yml │ │ │ │ └── main.yml │ │ │ ├── templates/ │ │ │ │ └── cloudflared.j2 │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── common/ │ │ │ ├── files/ │ │ │ │ ├── english.txt │ │ │ │ ├── footer.html │ │ │ │ └── header.html │ │ │ ├── tasks/ │ │ │ │ ├── detect-public-ip.yml │ │ │ │ ├── main.yml │ │ │ │ └── set-default-variables.yml │ │ │ ├── templates/ │ │ │ │ ├── 20auto-upgrades.j2 │ │ │ │ ├── 50unattended-upgrades.j2 │ │ │ │ └── test-client-inventory.j2 │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── diagnostics/ │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ └── templates/ │ │ │ └── streisand-diagnostics.md.j2 │ │ ├── dnsmasq/ │ │ │ ├── handlers/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ ├── templates/ │ │ │ │ ├── dnsmasq.conf.j2 │ │ │ │ └── dnsmasq.service.j2 │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── download-and-verify/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ └── tasks/ │ │ │ └── main.yml │ │ ├── ec2-security-group/ │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── gce-network/ │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── genesis-amazon/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── files/ │ │ │ │ └── aws-metadata-instance.service │ │ │ ├── meta/ │ │ │ │ └── main.yml │ │ │ └── tasks/ │ │ │ └── main.yml │ │ ├── genesis-azure/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── meta/ │ │ │ │ └── main.yml │ │ │ └── tasks/ │ │ │ └── main.yml │ │ ├── genesis-digitalocean/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ └── tasks/ │ │ │ └── main.yml │ │ ├── genesis-google/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── meta/ │ │ │ │ └── main.yml │ │ │ └── tasks/ │ │ │ └── main.yml │ │ ├── genesis-linode/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ └── tasks/ │ │ │ └── main.yml │ │ ├── genesis-rackspace/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ └── tasks/ │ │ │ └── main.yml │ │ ├── gpg/ │ │ │ ├── files/ │ │ │ │ ├── 2D8330C2.daniel@binaryparadox.net.asc │ │ │ │ ├── 2F2B01E7.security@openvpn.net.asc │ │ │ │ ├── 4AE8DA82.putty@projects.tartarus.org.asc │ │ │ │ ├── 7F343FA7.nmav@redhat.com.asc │ │ │ │ ├── 93298290.torbrowser@torproject.org.asc │ │ │ │ ├── 96865171.nmav@gnutls.org.asc │ │ │ │ ├── A697A56F.corban@raunco.co.asc │ │ │ │ ├── AF16234E.alimakki@gmail.com.asc │ │ │ │ ├── CDF6583E.josh@joshlund.com.asc │ │ │ │ ├── DD3AAAA3.Michal.Trojnara@stunnel.org.asc │ │ │ │ └── F67DA905.nop@nop.com.asc │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ ├── templates/ │ │ │ │ ├── dirmngr.conf.j2 │ │ │ │ └── streisand-gpg-refresh.j2 │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── i18n-docs/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ └── templates/ │ │ │ └── languages.md.j2 │ │ ├── ip-forwarding/ │ │ │ ├── files/ │ │ │ │ └── streisand-ipforward.sh │ │ │ └── tasks/ │ │ │ └── main.yml │ │ ├── lets-encrypt/ │ │ │ ├── files/ │ │ │ │ └── 01-reload-nginx.sh │ │ │ ├── tasks/ │ │ │ │ ├── firewall.yml │ │ │ │ ├── install.yml │ │ │ │ └── main.yml │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── nginx/ │ │ │ ├── files/ │ │ │ │ ├── nginx.conf │ │ │ │ └── nginx_signing.key │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ ├── templates/ │ │ │ │ └── nginx.service.j2 │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── openconnect/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── files/ │ │ │ │ ├── ocserv-pam │ │ │ │ └── openconnect.conf │ │ │ ├── handlers/ │ │ │ │ └── main.yml │ │ │ ├── meta/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ ├── docs.yml │ │ │ │ ├── firewall.yml │ │ │ │ ├── install.yml │ │ │ │ ├── main.yml │ │ │ │ └── mirror.yml │ │ │ ├── templates/ │ │ │ │ ├── client.mobileconfig.j2 │ │ │ │ ├── config.j2 │ │ │ │ ├── instructions-fr.md.j2 │ │ │ │ ├── instructions.md.j2 │ │ │ │ ├── mirror-fr.md.j2 │ │ │ │ ├── mirror.md.j2 │ │ │ │ ├── ocserv-iptables.service.j2 │ │ │ │ └── ocserv.service.j2 │ │ │ └── vars/ │ │ │ ├── main.yml │ │ │ └── mirror.yml │ │ ├── openvpn/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── files/ │ │ │ │ └── openvpn_signing.key │ │ │ ├── handlers/ │ │ │ │ └── main.yml │ │ │ ├── meta/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ ├── docs.yml │ │ │ │ ├── firewall.yml │ │ │ │ ├── install.yml │ │ │ │ ├── main.yml │ │ │ │ └── mirror.yml │ │ │ ├── templates/ │ │ │ │ ├── client-combined.ovpn.j2 │ │ │ │ ├── client-common.j2 │ │ │ │ ├── client-direct-udp.ovpn.j2 │ │ │ │ ├── client-direct.ovpn.j2 │ │ │ │ ├── client-sslh.ovpn.j2 │ │ │ │ ├── client-stunnel.ovpn.j2 │ │ │ │ ├── etc_openvpn_server.conf.j2 │ │ │ │ ├── etc_openvpn_server_common.j2 │ │ │ │ ├── etc_openvpn_server_udp.conf.j2 │ │ │ │ ├── instructions-fr.md.j2 │ │ │ │ ├── instructions.md.j2 │ │ │ │ ├── mirror-fr.md.j2 │ │ │ │ ├── mirror.md.j2 │ │ │ │ ├── openvpn-iptables.service.j2 │ │ │ │ ├── openvpn.service.j2 │ │ │ │ ├── openvpn_dnsmasq.conf.j2 │ │ │ │ ├── stunnel-instructions-fr.md.j2 │ │ │ │ └── stunnel-instructions.md.j2 │ │ │ └── vars/ │ │ │ ├── main.yml │ │ │ └── mirror.yml │ │ ├── service-net/ │ │ │ ├── files/ │ │ │ │ ├── 10-service0.netdev │ │ │ │ ├── 10-service0.network │ │ │ │ └── service-net.conf │ │ │ ├── meta/ │ │ │ │ └── main.yml │ │ │ └── tasks/ │ │ │ └── main.yml │ │ ├── shadowsocks/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── handlers/ │ │ │ │ └── main.yml │ │ │ ├── meta/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ ├── docs.yml │ │ │ │ ├── firewall.yml │ │ │ │ ├── main.yml │ │ │ │ ├── mirror.yml │ │ │ │ ├── simple-obfs.yml │ │ │ │ └── v2ray.yml │ │ │ ├── templates/ │ │ │ │ ├── config.json.j2 │ │ │ │ ├── instructions-fr.md.j2 │ │ │ │ ├── instructions.md.j2 │ │ │ │ ├── mirror-fr.md.j2 │ │ │ │ ├── mirror.md.j2 │ │ │ │ ├── shadowsocks-libev.default.j2 │ │ │ │ └── shadowsocks-libev.service.j2 │ │ │ └── vars/ │ │ │ ├── main.yml │ │ │ └── mirror.yml │ │ ├── ssh/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── files/ │ │ │ │ └── sshd_config │ │ │ ├── handlers/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── ssh-forward/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ ├── docs.yml │ │ │ │ ├── main.yml │ │ │ │ └── mirror.yml │ │ │ ├── templates/ │ │ │ │ ├── instructions-fr.md.j2 │ │ │ │ ├── instructions.md.j2 │ │ │ │ ├── mirror-fr.md.j2 │ │ │ │ └── mirror.md.j2 │ │ │ └── vars/ │ │ │ ├── main.yml │ │ │ └── mirror.yml │ │ ├── sslh/ │ │ │ ├── handlers/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ ├── templates/ │ │ │ │ ├── sslh.cfg.j2 │ │ │ │ ├── sslh.default.j2 │ │ │ │ └── sslh.service.j2 │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── streisand-gateway/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── handlers/ │ │ │ │ └── main.yml │ │ │ ├── meta/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ ├── docs.yml │ │ │ │ ├── fetch-and-cleanup.yml │ │ │ │ ├── main.yml │ │ │ │ └── openssl.yml │ │ │ ├── templates/ │ │ │ │ ├── firewall-fr.md.j2 │ │ │ │ ├── firewall.md.j2 │ │ │ │ ├── index-fr.md.j2 │ │ │ │ ├── index.md.j2 │ │ │ │ ├── instructions-fr.md.j2 │ │ │ │ ├── instructions.md.j2 │ │ │ │ ├── openssl-local.cnf.j2 │ │ │ │ └── vhost.j2 │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── streisand-mirror/ │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ ├── templates/ │ │ │ │ ├── mirror-index-fr.md.j2 │ │ │ │ └── mirror-index.md.j2 │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── stunnel/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── handlers/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ ├── firewall.yml │ │ │ │ ├── main.yml │ │ │ │ └── mirror.yml │ │ │ ├── templates/ │ │ │ │ ├── mirror-fr.md.j2 │ │ │ │ ├── mirror.md.j2 │ │ │ │ ├── stunnel-local.conf.j2 │ │ │ │ ├── stunnel-remote.conf.j2 │ │ │ │ └── stunnel.service.j2 │ │ │ └── vars/ │ │ │ ├── main.yml │ │ │ └── mirror.yml │ │ ├── sysctl/ │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── test-client/ │ │ │ ├── files/ │ │ │ │ ├── openvpn_signing.key │ │ │ │ └── shadowsocks-qr-decode.py │ │ │ ├── tasks/ │ │ │ │ ├── main.yml │ │ │ │ ├── openconnect-profiletest.yml │ │ │ │ ├── openconnect.yml │ │ │ │ ├── openvpn-profileget.yml │ │ │ │ ├── openvpn-profiletest.yml │ │ │ │ ├── openvpn-test.yml │ │ │ │ ├── openvpn.yml │ │ │ │ ├── shadowsocks.yml │ │ │ │ ├── ssh-forward.yml │ │ │ │ ├── stunnel.yml │ │ │ │ ├── tor.yml │ │ │ │ ├── wireguard-profiletest.yml │ │ │ │ └── wireguard.yml │ │ │ ├── templates/ │ │ │ │ ├── obfs4.relay.client.torrc.j2 │ │ │ │ ├── openvpn-profile-addons.j2 │ │ │ │ ├── ssh-config.j2 │ │ │ │ ├── streisand-gateway-test.sh.j2 │ │ │ │ └── streisand-shadowsocks-forward-test.sh.j2 │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── tinyproxy/ │ │ │ ├── handlers/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ └── main.yml │ │ │ ├── templates/ │ │ │ │ ├── tinyproxy.conf.j2 │ │ │ │ ├── tinyproxy.service.j2 │ │ │ │ └── tinyproxytmp.conf.j2 │ │ │ └── vars/ │ │ │ └── main.yml │ │ ├── tor-bridge/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ ├── files/ │ │ │ │ └── apparmor-local-override │ │ │ ├── handlers/ │ │ │ │ └── main.yml │ │ │ ├── meta/ │ │ │ │ └── main.yml │ │ │ ├── tasks/ │ │ │ │ ├── docs.yml │ │ │ │ ├── firewall.yml │ │ │ │ ├── main.yml │ │ │ │ ├── mirror-common.yml │ │ │ │ └── mirror.yml │ │ │ ├── templates/ │ │ │ │ ├── hidden-service-vhost.j2 │ │ │ │ ├── instructions-fr.md.j2 │ │ │ │ ├── instructions.md.j2 │ │ │ │ ├── mirror-fr.md.j2 │ │ │ │ ├── mirror.md.j2 │ │ │ │ └── torrc.j2 │ │ │ └── vars/ │ │ │ ├── main.yml │ │ │ ├── mirror-common.yml │ │ │ ├── mirror-download.yml │ │ │ └── mirror.yml │ │ ├── ufw/ │ │ │ └── tasks/ │ │ │ └── main.yml │ │ ├── validation/ │ │ │ ├── defaults/ │ │ │ │ └── main.yml │ │ │ └── tasks/ │ │ │ ├── main.yml │ │ │ └── ssh.yml │ │ └── wireguard/ │ │ ├── defaults/ │ │ │ └── main.yml │ │ ├── meta/ │ │ │ └── main.yml │ │ ├── tasks/ │ │ │ ├── docs.yml │ │ │ ├── firewall.yml │ │ │ ├── install.yml │ │ │ └── main.yml │ │ ├── templates/ │ │ │ ├── client-openwrt.txt.j2 │ │ │ ├── client.conf.j2 │ │ │ ├── instructions-fr.md.j2 │ │ │ ├── instructions.md.j2 │ │ │ ├── server.conf.j2 │ │ │ ├── streisand-wireguard-service.sh.j2 │ │ │ └── wireguard_dnsmasq.conf.j2 │ │ └── vars/ │ │ └── main.yml │ ├── ssh-setup.yml │ ├── streisand.yml │ ├── test-client.yml │ ├── vagrant.yml │ └── validate.yml ├── requirements.txt ├── streisand ├── tests/ │ ├── README.md │ ├── ansible.cfg │ ├── development-setup.yml │ ├── group_vars/ │ │ └── all/ │ │ └── all │ ├── inventory │ ├── randomize_sitevars.sh │ ├── remote_test.sh │ ├── run.yml │ ├── shellcheck.sh │ ├── site_vars/ │ │ ├── cloudflared.yml │ │ ├── openconnect.yml │ │ ├── openvpn.yml │ │ ├── random.yml │ │ ├── shadowsocks.yml │ │ └── ssh.yml │ ├── syntax-check.yml │ ├── tests.sh │ ├── vars_ci.yml │ ├── yamlcheck.sh │ └── yamllint-config.yml └── util/ ├── ansible_check.sh ├── dependencies.txt ├── print-aws-regions.py ├── source_check_and_default_site_vars.sh ├── source_validate_and_deploy.sh ├── ubuntu-dependencies.sh ├── venv-dependencies.sh └── version_at_least.py