Compare commits

...

21 Commits

Author SHA1 Message Date
c7937a241a Manual cleanup 2019-08-03 21:07:11 -07:00
543099e914 Move build.sh into bin/ 2019-08-03 20:54:44 -07:00
869833c79b Add .nvmrc 2019-08-03 20:42:39 -07:00
271cee8bca Update package.json 2019-08-03 20:34:35 -07:00
3e63b62881 Update Travis config to run format check 2019-08-03 20:18:33 -07:00
d01b88520a Update README.md 2019-08-03 19:23:57 -07:00
4c44a3c510 Add CI format check script 2019-08-03 19:21:17 -07:00
81a0fd91c2 Update README.md building instructions for consistency 2019-08-03 16:06:25 -07:00
0183c0f4f5 Trust minor version bumps for js-beautify 2019-08-03 16:01:06 -07:00
491d2f9eb0 Cleanup 2019-08-03 15:56:43 -07:00
2a96893aca Cleanup merge conflicts and update package script 2019-08-03 15:48:42 -07:00
635152fbb1 Cleanup merge conflicts 2019-08-03 15:45:38 -07:00
e18870916a Merge remote-tracking branch 'origin/master' into add-beautify 2019-08-03 15:37:39 -07:00
ecc215531e Revert "Test Travis matrix config"
This reverts commit 69125a052f.
2019-08-03 14:33:29 -07:00
af9ea5c286 Trigger CI 2019-08-03 14:30:14 -07:00
69125a052f Test Travis matrix config 2019-08-03 14:28:17 -07:00
dd35fd643a Remove pre-push Husky rule; unneeded 2019-08-03 14:13:01 -07:00
38d5f9254f Remove space rule due to using tabs 2019-08-03 14:12:07 -07:00
c9f9cf255b Update package.json 2019-08-03 13:58:01 -07:00
9b4f84d96c Update Husky scripts 2019-08-03 13:48:20 -07:00
de91049200 Add NPM + Beautify 2019-08-03 13:21:13 -07:00
89 changed files with 3870 additions and 2069 deletions

95
.gitignore vendored
View File

@ -3,3 +3,98 @@ Gemfile
Gemfile.lock Gemfile.lock
.sass-cache/ .sass-cache/
.DS_Store .DS_Store
# Created by https://www.gitignore.io/api/node
# Edit at https://www.gitignore.io/?templates=node
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# End of https://www.gitignore.io/api/node

6
.jsbeautifyrc Normal file
View File

@ -0,0 +1,6 @@
{
"html": {
"indent_with_tabs": true,
"indent_handlebars": true
}
}

3
.lintstagedrc Normal file
View File

@ -0,0 +1,3 @@
{
"*.html": "bin/html-beautify-check.sh"
}

1
.nvmrc Normal file
View File

@ -0,0 +1 @@
v12.7.0

View File

@ -1,11 +1,19 @@
language: ruby matrix:
rvm: include:
- 2.4.1 - language: ruby
rvm: 2.4.1
# Assume bundler is being used, therefore # Assume bundler is being used, therefore
# the `install` step will run `bundle install` by default. # the `install` step will run `bundle install` by default.
script: ./build.sh script: ./bin/build.sh
sudo: false # route your build to the container-based infrastructure for a faster build sudo: false # route your build to the container-based infrastructure for a faster build
cache: bundler # caching bundler gem packages will speed up build cache: bundler # caching bundler gem packages will speed up build
- language: node_js
node_js: v12.7.0
branches:
only:
- master
script: npm run format-test:html

View File

@ -15,9 +15,13 @@ You can submit your suggestions here on GitHub [(Issues)](https://github.com/pri
## Building ## Building
1. Install [Ruby](https://www.ruby-lang.org/en/documentation/installation/) 1. Install [Ruby](https://www.ruby-lang.org/en/documentation/installation/)
1. Install [bundler](https://bundler.io/) by running `gem install bundler`. 1. Run `gem install bundler` to install [bundler](https://bundler.io/).
1. Run `bundle install` to install the required dependencies. 1. Run `bundle install` to install the required Ruby dependencies.
1. Use `bundle exec jekyll build` to build the website. The output can be found in the `_site` directory. Live preview is also possible by running `bundle exec jekyll serve` 1. Install [Node.js](https://nodejs.org/).
1. Run `npm install` to install the required Node dependencies.
1. Use `npm run build` to build the website. The output can be found in the `_site` directory.
1. Use `npm run serve` for a live preview of the website.
1. Use `npm run format:html` to format the HTML source code.
# Support privacytools.io # Support privacytools.io

View File

@ -17,8 +17,7 @@
{% assign text = label_data[1] %} {% assign text = label_data[1] %}
{% assign tooltip = label_data[2] | default: "" %} {% assign tooltip = label_data[2] | default: "" %}
{% assign help_icon = '<i class="far fa-question-circle"></i>' %} {% assign help_icon = '<i class="far fa-question-circle"></i>' %}
<span class="badge badge-{{color}}" {% if tooltip %} data-toggle="tooltip" title="{{ tooltip }}">{{text}} {{ help_icon <span class="badge badge-{{color}}" {% if tooltip %} data-toggle="tooltip" title="{{ tooltip }}">{{text}} {{ help_icon }}
}}
{% else %} {% else %}
>{{text}} >{{text}}
{% endif %} {% endif %}
@ -71,4 +70,4 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -21,7 +21,7 @@
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:url" content="{{ page.permalink | prepend: site.url }}" /> <meta property="og:url" content="{{ page.permalink | prepend: site.url }}" />
<meta property="og:image" content="https://www.privacytools.io/assets/img/layout/ogimage.jpg" /> <meta property="og:image" content="https://www.privacytools.io/assets/img/layout/ogimage.jpg" />
<meta property="og:description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}"/> <meta property="og:description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}" />
<meta property="og:locale" content="en_GB" /> <meta property="og:locale" content="en_GB" />
<meta property="og:site_name" content="privacytools.io" /> <meta property="og:site_name" content="privacytools.io" />

View File

@ -11,4 +11,4 @@
{{include.body}} {{include.body}}
</div> </div>
</div> </div>
</div> </div>

View File

@ -3,11 +3,11 @@
<script src="/assets/js/bootstrap.min.js?v=4"></script> <script src="/assets/js/bootstrap.min.js?v=4"></script>
<script src="/assets/js/sortable.min.js?v=4"></script> <script src="/assets/js/sortable.min.js?v=4"></script>
<script> <script>
$(function () { $(function() {
$("[data-toggle='tooltip']").tooltip(); $("[data-toggle='tooltip']").tooltip();
}); });
$('.navbar a').not(".dropdown-toggle").click(function (e) { $('.navbar a').not(".dropdown-toggle").click(function(e) {
if ($(".navbar-toggler").is(":visible")) { if ($(".navbar-toggler").is(":visible")) {
$('.navbar-collapse').collapse('toggle'); $('.navbar-collapse').collapse('toggle');
} }
@ -27,11 +27,17 @@
_paq.push(['trackPageView']); _paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']); _paq.push(['enableLinkTracking']);
(function() { (function() {
var u="https://stats.privacytools.io/"; var u = "https://stats.privacytools.io/";
_paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setTrackerUrl', u + 'matomo.php']);
_paq.push(['setSiteId', '1']); _paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; var d = document,
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); g = d.createElement('script'),
s = d.getElementsByTagName('script')[0];
g.type = 'text/javascript';
g.async = true;
g.defer = true;
g.src = u + 'matomo.js';
s.parentNode.insertBefore(g, s);
})(); })();
</script> </script>
<noscript><img src="https://stats.privacytools.io/matomo.php?idsite=1&amp;rec=1" style="border:0" alt=""/></noscript> <noscript><img src="https://stats.privacytools.io/matomo.php?idsite=1&amp;rec=1" style="border:0" alt="" /></noscript>

View File

@ -9,9 +9,9 @@
<p>When you visit a web page, your browser voluntarily sends information about its configuration, such as available fonts, browser type, and add-ons. If this combination of information is unique, it may be possible to identify and track you without using cookies. EFF created a Tool called <a href="https://panopticlick.eff.org/">Panopticlick</a> to test your browser to see how unique it is.</p> <p>When you visit a web page, your browser voluntarily sends information about its configuration, such as available fonts, browser type, and add-ons. If this combination of information is unique, it may be possible to identify and track you without using cookies. EFF created a Tool called <a href="https://panopticlick.eff.org/">Panopticlick</a> to test your browser to see how unique it is.</p>
<p> <p>
<a class="btn btn-warning" href="https://panopticlick.eff.org/"> <a class="btn btn-warning" href="https://panopticlick.eff.org/">
Test your Browser now Test your Browser now
</a> </a>
</p> </p>
<p>You need to find what <strong>most browsers</strong> are reporting, and then use those variables to bring your browser in the same population. This means having the same fonts, plugins, and extensions installed as the large installed base. You should have a <a href="https://addons.mozilla.org/firefox/addon/uaswitcher/">spoofed user agent string</a> to match what the large userbase has. You need to have the same settings enabled and disabled, such as DNT and WebGL. You need your browser to look as common as everyone else. Disabling JavaScript, using Linux, or even the TBB, will make your browser stick out from the masses.</p> <p>You need to find what <strong>most browsers</strong> are reporting, and then use those variables to bring your browser in the same population. This means having the same fonts, plugins, and extensions installed as the large installed base. You should have a <a href="https://addons.mozilla.org/firefox/addon/uaswitcher/">spoofed user agent string</a> to match what the large userbase has. You need to have the same settings enabled and disabled, such as DNT and WebGL. You need your browser to look as common as everyone else. Disabling JavaScript, using Linux, or even the TBB, will make your browser stick out from the masses.</p>

View File

@ -7,7 +7,7 @@
<p>While software like NoScript prevents this, it's probably a good idea to block this protocol directly as well, just to be safe.</p> <p>While software like NoScript prevents this, it's probably a good idea to block this protocol directly as well, just to be safe.</p>
<p> <p>
<a class="btn btn-warning" target="_blank" rel="noopener noreferrer" href="https://ipleak.net">Test your Browser now</a> <a class="btn btn-warning" target="_blank" rel="noopener noreferrer" href="https://ipleak.net">Test your Browser now</a>
</p> </p>
<h3>How to disable WebRTC in Firefox?</h3> <h3>How to disable WebRTC in Firefox?</h3>
@ -35,7 +35,7 @@
<p>Now you can be 100% sure WebRTC is disabled.</p> <p>Now you can be 100% sure WebRTC is disabled.</p>
<p> <p>
<a class="btn btn-primary" target="_blank" rel="noopener noreferrer" href="https://ipleak.net">Test your Browser again</a> <a class="btn btn-primary" target="_blank" rel="noopener noreferrer" href="https://ipleak.net">Test your Browser again</a>
</p> </p>
<h3>How to fix the WebRTC Leak in Google Chrome?</h3> <h3>How to fix the WebRTC Leak in Google Chrome?</h3>

View File

@ -39,4 +39,4 @@ github="https://github.com/jedisct1/dnscrypt-proxy"
<li><a href="https://blahdns.com/">BlahDNS</a> - A small hobby ad-blocking DNS project with DoH, DoT, and DNSCrypt support. Servers located in Switzerland, Japan, and Germany. <span class="badge badge-warning" data-toggle="tooltip" title="'Use at your own risk.', uses Cloudflare">Warnings <i class="far fa-question-circle"></i></a></span></li> <li><a href="https://blahdns.com/">BlahDNS</a> - A small hobby ad-blocking DNS project with DoH, DoT, and DNSCrypt support. Servers located in Switzerland, Japan, and Germany. <span class="badge badge-warning" data-toggle="tooltip" title="'Use at your own risk.', uses Cloudflare">Warnings <i class="far fa-question-circle"></i></a></span></li>
<li><a href="https://powerdns.org/">PowerDNS</a> - A best effort DoH service. Servers located in the Netherlands.</li> <li><a href="https://powerdns.org/">PowerDNS</a> - A best effort DoH service. Servers located in the Netherlands.</li>
<li><a href="https://quad9.net/">Quad9 DNS</a> - A non-profit, anycast DNS provider founded by <a href="https://www-03.ibm.com/press/us/en/pressrelease/53388.wss">IBM</a>, <a href="https://www.pch.net/">PCH</a>, and <a href=https://www.globalcyberalliance.org/quad9/"">Global Cyber Alliance</a>. Provides malicious domain filtering and supports DoH, DoT, and DNSCrypt. <span class="badge badge-warning" data-toggle="tooltip" title="Founders of Global Cyber Alliance include: City of London Police & Manhattan District Attorney's Office">Warnings <i class="far fa-question-circle"></i></a></span></li> <li><a href="https://quad9.net/">Quad9 DNS</a> - A non-profit, anycast DNS provider founded by <a href="https://www-03.ibm.com/press/us/en/pressrelease/53388.wss">IBM</a>, <a href="https://www.pch.net/">PCH</a>, and <a href=https://www.globalcyberalliance.org/quad9/"">Global Cyber Alliance</a>. Provides malicious domain filtering and supports DoH, DoT, and DNSCrypt. <span class="badge badge-warning" data-toggle="tooltip" title="Founders of Global Cyber Alliance include: City of London Police & Manhattan District Attorney's Office">Warnings <i class="far fa-question-circle"></i></a></span></li>
</ul> </ul>

View File

@ -93,7 +93,7 @@
</td> </td>
<td> <td>
<a data-toggle="tooltip" data-placement="bottom" data-original-title="https://mailbox.org" href="https://mailbox.org"><img alt="WWW" src="/assets/img/layout/www.png" width="35 "height="35"></a> <a data-toggle="tooltip" data-placement="bottom" data-original-title="https://mailbox.org" href="https://mailbox.org"><img alt="WWW" src="/assets/img/layout/www.png" width="35 " height="35"></a>
</td> </td>
<td data-value="2014">2014</td> <td data-value="2014">2014</td>
<td><span class="flag-icon flag-icon-de"></span> Germany</td> <td><span class="flag-icon flag-icon-de"></span> Germany</td>
@ -194,10 +194,11 @@
<ul> <ul>
<li><a href="https://www.confidantmail.org/">Confidant Mail</a> - An open-source non-SMTP cryptographic email system optimized for large file attachments. It is a secure and spam-resistant alternative to regular email and online file drop services. It <li><a href="https://www.confidantmail.org/">Confidant Mail</a> - An open-source non-SMTP cryptographic email system optimized for large file attachments. It is a secure and spam-resistant alternative to regular email and online file drop services. It
uses <a href="https://theprivacyguide.org/tutorials/gpg.html">GNU Privacy Guard (GPG)</a> for content encryption and authentication, and TLS 1.2 with ephemeral keys for transport encryption.</li> uses <a href="https://theprivacyguide.org/tutorials/gpg.html">GNU Privacy Guard (GPG)</a> for content encryption and authentication, and TLS 1.2 with ephemeral keys for transport encryption.</li>
</ul> <h3>Become Your Own Email Provider with Mail-in-a-Box</h3> </ul>
<h3>Become Your Own Email Provider with Mail-in-a-Box</h3>
<a href="https://mailinabox.email/"><img src="/assets/img/provider/Mail-in-a-Box.png" width="200" height="70" class="img-fluid float-left" alt="Mail-in-a-Box" style="margin-right:10px;"></a> <a href="https://mailinabox.email/"><img src="/assets/img/provider/Mail-in-a-Box.png" width="200" height="70" class="img-fluid float-left" alt="Mail-in-a-Box" style="margin-right:10px;"></a>
<p>Take it a step further and get control of your email with this easy-to-deploy mail server in a box. Mail-in-a-Box lets you become your own mail service provider in a few easy steps. It's sort of like making your own Gmail, but one you control from top <p>Take it a step further and get control of your email with this easy-to-deploy mail server in a box. Mail-in-a-Box lets you become your own mail service provider in a few easy steps. It's sort of like making your own Gmail, but one you control from top
to bottom. Technically, Mail-in-a-Box turns a fresh cloud computer into a working mail server. But you don't need to be a technology expert to set it up. <strong>More: <a href="https://mailinabox.email/">https://mailinabox.email/</a></strong></p> to bottom. Technically, Mail-in-a-Box turns a fresh cloud computer into a working mail server. But you don't need to be a technology expert to set it up. <strong>More: <a href="https://mailinabox.email/">https://mailinabox.email/</a></strong></p>
<h3>Related Information</h3> <h3>Related Information</h3>

View File

@ -4,10 +4,10 @@
</div> </div>
<form method="POST" action="https://search.privacytools.io/" id="search_form" role="search"> <form method="POST" action="https://search.privacytools.io/" id="search_form" role="search">
<div class="input-group col-12 col-md-8 offset-md-2"> <div class="input-group col-12 col-md-8 offset-md-2">
<input type="search" name="q" class="form-control input-lg" id="q" placeholder="Try search.privacytools.io, a Privacy-Respecting Search Engine" autocomplete="off" value=""> <input type="search" name="q" class="form-control input-lg" id="q" placeholder="Try search.privacytools.io, a Privacy-Respecting Search Engine" autocomplete="off" value="">
<span class="input-group-btn"> <span class="input-group-btn">
<button type="submit" class="btn btn-primary input-lg"><span class="hide_if_nojs"><i class="fas fa-search"></i> </span><span class="hidden active_if_nojs">start search</span></button> <button type="submit" class="btn btn-primary input-lg"><span class="hide_if_nojs"><i class="fas fa-search"></i> </span><span class="hidden active_if_nojs">start search</span></button>
</span> </span>
</div> </div>
</form> </form>

View File

@ -4,7 +4,6 @@
<strong>If you are currently using an Instant Messenger like LINE, Telegram, Viber, <a href="https://www.eff.org/deeplinks/2016/10/where-whatsapp-went-wrong-effs-four-biggest-security-concerns">WhatsApp</a>, or plain SMS messages you should pick an alternative here.</strong> <strong>If you are currently using an Instant Messenger like LINE, Telegram, Viber, <a href="https://www.eff.org/deeplinks/2016/10/where-whatsapp-went-wrong-effs-four-biggest-security-concerns">WhatsApp</a>, or plain SMS messages you should pick an alternative here.</strong>
</div> </div>
{% include cardv2.html {% include cardv2.html
title="Signal" title="Signal"
image="/assets/img/tools/Signal.png" image="/assets/img/tools/Signal.png"
@ -20,7 +19,6 @@ windows=""
linux="" linux=""
%} %}
{% include cardv2.html {% include cardv2.html
title="Wire" title="Wire"
image="/assets/img/tools/wire.png" image="/assets/img/tools/wire.png"

View File

@ -2,7 +2,8 @@
<h3>Who is required to hand over the encryption keys to authorities?</h3> <h3>Who is required to hand over the encryption keys to authorities?</h3>
<p>Mandatory <a href="https://en.wikipedia.org/wiki/Key_disclosure_law">key disclosure laws</a> require individuals to turn over encryption keys to law enforcement conducting a criminal investigation. How these laws are implemented (who may be legally compelled to assist) vary from nation to nation, but a warrant is generally required. Defenses against key disclosure laws include steganography and encrypting data in a way that provides plausible deniability.</p> <p><a href="https://en.wikipedia.org/wiki/Steganography">Steganography</a> involves hiding sensitive information (which may be encrypted) inside of ordinary data (for example, encrypting an image file and then hiding it in an audio file). With plausible deniability, data is encrypted in a way that prevents an adversary from being able to prove that the information they are after exists (for example, one password may decrypt benign data and another password, used on the same file, could decrypt sensitive data).</p> <p>Mandatory <a href="https://en.wikipedia.org/wiki/Key_disclosure_law">key disclosure laws</a> require individuals to turn over encryption keys to law enforcement conducting a criminal investigation. How these laws are implemented (who may be legally compelled to assist) vary from nation to nation, but a warrant is generally required. Defenses against key disclosure laws include steganography and encrypting data in a way that provides plausible deniability.</p>
<p><a href="https://en.wikipedia.org/wiki/Steganography">Steganography</a> involves hiding sensitive information (which may be encrypted) inside of ordinary data (for example, encrypting an image file and then hiding it in an audio file). With plausible deniability, data is encrypted in a way that prevents an adversary from being able to prove that the information they are after exists (for example, one password may decrypt benign data and another password, used on the same file, could decrypt sensitive data).</p>
<div class="row mb-2"> <div class="row mb-2">
@ -72,7 +73,7 @@
<p>Services based in the United States are not recommended because of the country's surveillance programs, use of <a href="https://www.eff.org/issues/national-security-letters/faq">National Security Letters</a> (NSLs) and accompanying gag orders, which forbid the recipient from talking about the request. This combination allows the government to <a href="https://www.schneier.com/blog/archives/2013/08/more_on_the_nsa.html">secretly force</a> companies to grant complete access to customer data and transform the service into a tool of mass surveillance.</p> <p>Services based in the United States are not recommended because of the country's surveillance programs, use of <a href="https://www.eff.org/issues/national-security-letters/faq">National Security Letters</a> (NSLs) and accompanying gag orders, which forbid the recipient from talking about the request. This combination allows the government to <a href="https://www.schneier.com/blog/archives/2013/08/more_on_the_nsa.html">secretly force</a> companies to grant complete access to customer data and transform the service into a tool of mass surveillance.</p>
<p>An example of this is <a href="https://en.wikipedia.org/wiki/Lavabit#Suspension_and_gag_order">Lavabit</a> a secure email service created by Ladar Levison. The FBI <a href="https://www.vice.com/en_us/article/nzz888/lavabit-founder-ladar-levison-discusses-his-federal-battle-for-privacy">requested</a> Snowden's records after finding out that he used the service. Since Lavabit did not keep logs and email content was stored encrypted, the FBI served a subpoena (with a gag order) for the service's SSL keys. Having the SSL keys would allow them to access <p>An example of this is <a href="https://en.wikipedia.org/wiki/Lavabit#Suspension_and_gag_order">Lavabit</a> a secure email service created by Ladar Levison. The FBI <a href="https://www.vice.com/en_us/article/nzz888/lavabit-founder-ladar-levison-discusses-his-federal-battle-for-privacy">requested</a> Snowden's records after finding out that he used the service. Since Lavabit did not keep logs and email content was stored encrypted, the FBI served a subpoena (with a gag order) for the service's SSL keys. Having the SSL keys would allow them to access
communications (both metadata and unencrypted content) in real time for all of Lavabit's customers, not just Snowden's.</p> communications (both metadata and unencrypted content) in real time for all of Lavabit's customers, not just Snowden's.</p>
<p>Ultimately, Levison turned over the SSL keys and <a href="https://www.theguardian.com/commentisfree/2014/may/20/why-did-lavabit-shut-down-snowden-email">shut down</a> the service at the same time. The US government then <a href="https://www.cnbc.com/id/100962389">threatened Levison with arrest</a>, saying that shutting down the service was a violation of the court order.</p> <p>Ultimately, Levison turned over the SSL keys and <a href="https://www.theguardian.com/commentisfree/2014/may/20/why-did-lavabit-shut-down-snowden-email">shut down</a> the service at the same time. The US government then <a href="https://www.cnbc.com/id/100962389">threatened Levison with arrest</a>, saying that shutting down the service was a violation of the court order.</p>

View File

@ -23,6 +23,7 @@
description='KeePass is a free open source password manager, which helps you to manage your passwords in a secure way. All passwords in one database, which is locked with one description='KeePass is a free open source password manager, which helps you to manage your passwords in a secure way. All passwords in one database, which is locked with one
master key or a key file. The databases are encrypted using the best and most secure encryption algorithms currently known: AES and Twofish. See also: <a href="https://keepassxc.org/">KeePassXC</a> with official native cross-platform support for Windows/macOS/Linux.' master key or a key file. The databases are encrypted using the best and most secure encryption algorithms currently known: AES and Twofish. See also: <a href="https://keepassxc.org/">KeePassXC</a> with official native cross-platform support for Windows/macOS/Linux.'
%} %}
{% include card.html color="warning" {% include card.html color="warning"
title="LessPass - Browser" title="LessPass - Browser"
image="/assets/img/tools/LessPass.png" image="/assets/img/tools/LessPass.png"

View File

@ -204,7 +204,7 @@
<tr> <tr>
<td data-value="ProtonVPN"> <td data-value="ProtonVPN">
<a href="https://protonvpn.com/"><img alt="ProtonVPN" src="/assets/img/provider/ProtonVPN.png" width="200" height="70"></a > <a href="https://protonvpn.com/"><img alt="ProtonVPN" src="/assets/img/provider/ProtonVPN.png" width="200" height="70"></a>
</td> </td>
<td> <td>
<a data-toggle="tooltip" data-placement="bottom" data-original-title="https://protonvpn.com/" href="https://protonvpn.com/"><img alt="WWW" src="/assets/img/layout/www.png" width="35" height="35"></a> <a data-toggle="tooltip" data-placement="bottom" data-original-title="https://protonvpn.com/" href="https://protonvpn.com/"><img alt="WWW" src="/assets/img/layout/www.png" width="35" height="35"></a>

View File

@ -1,6 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
{% include head.html %} {% include head.html %}
<body data-spy="scroll" data-target="#navbar"> <body data-spy="scroll" data-target="#navbar">
<header> <header>
{% include nav.html %} {% include nav.html %}
@ -9,4 +10,5 @@
{{ content }} {{ content }}
{% include scripts.html %} {% include scripts.html %}
</body> </body>
</html> </html>

View File

@ -1,4 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e # halt script on error set -e # halt script on error
bundle exec jekyll build bundle exec jekyll build

13
bin/get-html-ls.js Normal file
View File

@ -0,0 +1,13 @@
const glob = require('glob');
const pattern = '**/*.html';
const options = {
'ignore': [
'_site/**/*.html',
'node_modules/**/*.html'
]
};
glob(pattern, options, (error, files) => {
if (error) throw error;
process.stdout.write(files.join('\n') + '\n');
});

22
bin/html-beautify-check.sh Executable file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env bash
# Runs html-beautify's format check and errors with 0/1 if it needs to be changed.
APPDIR=$(readlink -f $(dirname $(dirname $0)))
TMPDIR=$(mktemp -d)
cd $APPDIR
for line in $*; do
filepath=$(readlink -f $line)
file=${filepath/$APPDIR\//}
mkdir -p $TMPDIR/$(dirname $file)
cp $APPDIR/$file $TMPDIR/$file
done
message=$(find $TMPDIR -type f | xargs node_modules/.bin/html-beautify -r | grep -v unchanged || true)
if [[ $message ]]; then
echo "$message" | sed "s#$TMPDIR##g" | sed "s#\.\.\/##g"
rm -rf $TMPDIR
exit 1
fi
rm -rf $TMPDIR

0
deleteme Normal file
View File

View File

@ -85,7 +85,7 @@ permalink: /donate/
<div class="row"> <div class="row">
<div class="col-md-12 col-lg-8 offset-lg-2 text-right"> <div class="col-md-12 col-lg-8 offset-lg-2 text-right">
<div class="form-group row"> <div class="form-group row">
<label for="BAT" class="col-sm-4 col-form-label"><strong>Brave BAT</strong></label> <label for="BAT" class="col-sm-4 col-form-label"><strong>Brave BAT</strong></label>

1614
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

28
package.json Normal file
View File

@ -0,0 +1,28 @@
{
"name": "privacytools.io",
"version": "1.0.0",
"devDependencies": {
"glob": "^7.1.4",
"husky": "^3.0.2",
"js-beautify": "^1.10.1",
"lint-staged": "^9.2.1"
},
"scripts": {
"build": "bundle exec jekyll build",
"serve": "bundle exec jekyll serve",
"format:html": "node bin/get-html-ls.js | xargs node_modules/.bin/html-beautify -r",
"format-test:html": "node bin/get-html-ls.js | xargs bash ./bin/html-beautify-check.sh"
},
"husky": {
"hooks": {
"pre-commit": "node_modules/.bin/lint-staged"
}
},
"repository": {
"type": "git",
"url": "git+https://github.com/privacytoolsIO/privacytools.io.git"
},
"bugs": {
"url": "https://github.com/privacytoolsIO/privacytools.io/issues"
}
}

View File

@ -58,6 +58,7 @@ description: "Find a no-logging VPN operator who isn't out to sell or read your
<li><a href="https://write.privacytools.io/my-thoughts-on-security/slicing-onions-part-1-myth-busting-tor">Slicing Onions: Part 1 Myth-busting Tor</a> by blacklight447</li> <li><a href="https://write.privacytools.io/my-thoughts-on-security/slicing-onions-part-1-myth-busting-tor">Slicing Onions: Part 1 Myth-busting Tor</a> by blacklight447</li>
<li><a href="https://write.privacytools.io/my-thoughts-on-security/slicing-onions-part-2-onion-recipes-vpn-not-required">Slicing Onions: Part 2 Onion recipes; VPN not required</a> by blacklight447</li> <li><a href="https://write.privacytools.io/my-thoughts-on-security/slicing-onions-part-2-onion-recipes-vpn-not-required">Slicing Onions: Part 2 Onion recipes; VPN not required</a> by blacklight447</li>
</ol> </ol>
<p> </p>
</div> </div>
</div> </div>
</div>

View File

@ -5,81 +5,78 @@ title: "Privacy Policy"
description: "This Privacy Policy explains what information privacytoolsIO and its related entities collect about its users, what we do with that information, and how we handle the content you place in our products and services." description: "This Privacy Policy explains what information privacytoolsIO and its related entities collect about its users, what we do with that information, and how we handle the content you place in our products and services."
--- ---
<h2>Scope of Privacy Policy</h2> <h2>Scope of Privacy Policy</h2>
<p>This Privacy Policy applies to the information that we obtain through your use of privacytoolsIO's services via a Device <p>This Privacy Policy applies to the information that we obtain through your use of privacytoolsIO's services via a Device
or when you otherwise interact with privacytoolsIO's official web services.</p> or when you otherwise interact with privacytoolsIO's official web services.</p>
<p>privacytoolsIO services include our:</p> <p>privacytoolsIO services include our:</p>
<ul> <ul>
<li>Websites (privacytools.io and subdomains *.privacytools.io)</li> <li>Websites (privacytools.io and subdomains *.privacytools.io)</li>
</ul> </ul>
<p>but does not include:</p> <p>but does not include:</p>
<ul> <ul>
<li>Products or services for which a separate privacy policy is provided.</li> <li>Products or services for which a separate privacy policy is provided.</li>
<li>Third Party Products. These are third party products or services that you may discover on our website or other official services we offer. <li>Third Party Products. These are third party products or services that you may discover on our website or other official services we offer.
privacytoolsIO cannot guarantee your privacy outside of websites under our control. You should always review the policies of third party products privacytoolsIO cannot guarantee your privacy outside of websites under our control. You should always review the policies of third party products
and services to make sure you are comfortable with the ways in which they collect and use your information.</li> and services to make sure you are comfortable with the ways in which they collect and use your information.</li>
</ul> </ul>
<h2>Website Visitors</h2> <h2>Website Visitors</h2>
<p>Like most website operators, privacytoolsIO collects non-personally-identifying information of the sort that web browsers and servers typically make available, <p>Like most website operators, privacytoolsIO collects non-personally-identifying information of the sort that web browsers and servers typically make available,
such as the browser type, language preference, referring site, and the date and time of each visitor request. privacytoolsIO's purpose in collecting such as the browser type, language preference, referring site, and the date and time of each visitor request. privacytoolsIO's purpose in collecting
non-personally identifying information is to better understand how its visitors use its website and related services. non-personally identifying information is to better understand how its visitors use its website and related services.
From time to time, privacytoolsIO may release non-personally-identifying information in the aggregate, e.g., From time to time, privacytoolsIO may release non-personally-identifying information in the aggregate, e.g.,
by publishing a report on trends in the usage of its website.</p> by publishing a report on trends in the usage of its website.</p>
<p>privacytoolsIO collects anonymized IP addresses in this form: 192.xxx.xxx.xxx for self-hosted Matomo statistics software. <p>privacytoolsIO collects anonymized IP addresses in this form: 192.xxx.xxx.xxx for self-hosted Matomo statistics software.
privacytoolsIO does not use such information to identify its visitors, however, and does not disclose such information, privacytoolsIO does not use such information to identify its visitors, however, and does not disclose such information,
other than under the same circumstances that it uses and discloses personally-identifying information, as described below.</p> other than under the same circumstances that it uses and discloses personally-identifying information, as described below.</p>
<h2>Opting Out of Website Tracking</h2> <h2>Opting Out of Website Tracking</h2>
<p>privacytoolsIO uses a self-hosted Matomo install to track visitor data. You can opt out entirely using the form below. This form may not function correctly with <p>privacytoolsIO uses a self-hosted Matomo install to track visitor data. You can opt out entirely using the form below. This form may not function correctly with
an ad blocker enabled.</p> an ad blocker enabled.</p>
<iframe <iframe style="border: 1; height: 120px; width: 100%;" src="https://stats.privacytools.io/index.php?module=CoreAdminHome&action=optOut&language=en&backgroundColor=&fontColor=212529&fontSize=1rem&fontFamily=-apple-system%2CBlinkMacSystemFont%2C%22Segoe%20UI%22%2CRoboto%2C%22Helvetica%20Neue%22%2CArial%2Csans-serif%2C%22Apple%20Color%20Emoji%22%2C%22Segoe%20UI%20Emoji%22%2C%22Segoe%20UI%20Symbol%22%2C%22Noto%20Color%20Emoji%22"></iframe>
style="border: 1; height: 120px; width: 100%;"
src="https://stats.privacytools.io/index.php?module=CoreAdminHome&action=optOut&language=en&backgroundColor=&fontColor=212529&fontSize=1rem&fontFamily=-apple-system%2CBlinkMacSystemFont%2C%22Segoe%20UI%22%2CRoboto%2C%22Helvetica%20Neue%22%2CArial%2Csans-serif%2C%22Apple%20Color%20Emoji%22%2C%22Segoe%20UI%20Emoji%22%2C%22Segoe%20UI%20Symbol%22%2C%22Noto%20Color%20Emoji%22"
></iframe>
<p>privacytoolsIO respects your Do Not Track setting in your browser. Users with Do Not Track enabled will not be tracked by any of our platforms. <p>privacytoolsIO respects your Do Not Track setting in your browser. Users with Do Not Track enabled will not be tracked by any of our platforms.
You are also free to block stats.privacytools.io using whatever method you prefer with no detrimental effects on your experience using our services.</p> You are also free to block stats.privacytools.io using whatever method you prefer with no detrimental effects on your experience using our services.</p>
<h2>Gathering of Personally-Identifying Information</h2> <h2>Gathering of Personally-Identifying Information</h2>
<p>Certain visitors to privacytoolsIO's websites choose to interact with privacytoolsIO in ways that require privacytoolsIO to gather personally-identifying information. <p>Certain visitors to privacytoolsIO's websites choose to interact with privacytoolsIO in ways that require privacytoolsIO to gather personally-identifying information.
The amount and type of information that privacytoolsIO gathers depends on the nature of the interaction. For example, we ask visitors who use our <a href="https://social.privacytools.io/">Mastodon service</a> The amount and type of information that privacytoolsIO gathers depends on the nature of the interaction. For example, we ask visitors who use our <a href="https://social.privacytools.io/">Mastodon service</a>
to provide a username and email address. In each case, privacytoolsIO collects such information only as in necessary or appropriate to fulfill the purpose of the to provide a username and email address. In each case, privacytoolsIO collects such information only as in necessary or appropriate to fulfill the purpose of the
visitors interaction with privacytoolsIO. privacytoolsIO does not disclose personally-identifying information other than as described below. And visitors can always visitors interaction with privacytoolsIO. privacytoolsIO does not disclose personally-identifying information other than as described below. And visitors can always
refuse to supply personally-identifying information, with the caveat that it may prevent them from engaging in certain website-related activities.</p> refuse to supply personally-identifying information, with the caveat that it may prevent them from engaging in certain website-related activities.</p>
<h2>Protection of Personally-Identifying Information</h2> <h2>Protection of Personally-Identifying Information</h2>
<p>privacytoolsIO will never rent, sell, nor give away potentially personally-identifying and personally-identifying information to any third parties.</p> <p>privacytoolsIO will never rent, sell, nor give away potentially personally-identifying and personally-identifying information to any third parties.</p>
<p>If you are a registered user of a privacytoolsIO service such as Mastodon or PeerTube, privacytoolsIO may occasionally send you an email to tell you about new features, <p>If you are a registered user of a privacytoolsIO service such as Mastodon or PeerTube, privacytoolsIO may occasionally send you an email to tell you about new features,
solicit your feedback, or just keep you up to date with whats going on with the service and the privacytoolsIO organization. solicit your feedback, or just keep you up to date with whats going on with the service and the privacytoolsIO organization.
We expect to keep this type of email to a minimum.</p> We expect to keep this type of email to a minimum.</p>
<p>privacytoolsIO takes all measures reasonably necessary to protect against the unauthorized access, use, alteration, or destruction of potentially personally-identifying and personally-identifying information.</p> <p>privacytoolsIO takes all measures reasonably necessary to protect against the unauthorized access, use, alteration, or destruction of potentially personally-identifying and personally-identifying information.</p>
<h2>Aggregated Statistics</h2> <h2>Aggregated Statistics</h2>
<p>privacytoolsIO may collect statistics about the behavior of visitors to its websites, and may reveal generalized statistics related to a variety of our services.</p> <p>privacytoolsIO may collect statistics about the behavior of visitors to its websites, and may reveal generalized statistics related to a variety of our services.</p>
<h2>Cookies</h2> <h2>Cookies</h2>
<p>A cookie is a string of information that a website stores on a visitors computer, and that the visitors browser provides to the website each time the visitor returns. <p>A cookie is a string of information that a website stores on a visitors computer, and that the visitors browser provides to the website each time the visitor returns.
privacytoolsIO uses cookies to help privacytoolsIO track visitor statistics, a visitor's usage of the privacytoolsIO website or services, and their services preferences. privacytoolsIO uses cookies to help privacytoolsIO track visitor statistics, a visitor's usage of the privacytoolsIO website or services, and their services preferences.
privacytoolsIO visitors who do not wish to have cookies placed on their computers should set their browsers to refuse cookies before using privacytoolsIO's websites, privacytoolsIO visitors who do not wish to have cookies placed on their computers should set their browsers to refuse cookies before using privacytoolsIO's websites,
with the drawback that certain features of privacytoolsIO's websites may not function properly without the aid of cookies.</p> with the drawback that certain features of privacytoolsIO's websites may not function properly without the aid of cookies.</p>
<h2>Privacy Policy Changes</h2> <h2>Privacy Policy Changes</h2>
<p>Although most changes are likely to be minor, privacytoolsIO may change its Privacy Policy from time to time, and at privacytoolsIO's sole discretion. <p>Although most changes are likely to be minor, privacytoolsIO may change its Privacy Policy from time to time, and at privacytoolsIO's sole discretion.
privacytoolsIO encourages visitors to frequently check this page for any changes to its Privacy Policy. Your continued use of this site privacytoolsIO encourages visitors to frequently check this page for any changes to its Privacy Policy. Your continued use of this site
after any change in this Privacy Policy will constitute your acceptance of such change.</p> after any change in this Privacy Policy will constitute your acceptance of such change.</p>
<h2>Contact Us</h2> <h2>Contact Us</h2>
<p>If you have any questions or concerns about this privacy policy or the data we collect, you are free to <a href="https://github.com/privacytoolsIO/privacytools.io/issues">open an issue on our issue tracker at GitHub</a>.</p> <p>If you have any questions or concerns about this privacy policy or the data we collect, you are free to <a href="https://github.com/privacytoolsIO/privacytools.io/issues">open an issue on our issue tracker at GitHub</a>.</p>