1
0
Fork 0
mirror of https://github.com/safing/web synced 2025-04-03 10:39:11 +00:00

Init website v1.1 - ready for github pages

This commit is contained in:
davegson 2018-06-11 12:52:23 +02:00
parent 9a2fa24258
commit 95a6641c57
196 changed files with 22443 additions and 0 deletions
CNAMEGemfileGemfile.lock_config.yml
_data
_drafts
_includes
_layouts
_posts
_sass
assets
blog
community-hub
download
feed.xml
funding
index.html
our-values
roadmap
technology
terms
vendor/css

1
CNAME Normal file
View file

@ -0,0 +1 @@
safing.io

10
Gemfile Normal file
View file

@ -0,0 +1,10 @@
source 'https://rubygems.org'
gem 'jekyll'
group :jekyll_plugins do
gem 'jekyll-paginate'
gem 'jekyll-minifier'
end
gem 'therubyracer'

82
Gemfile.lock Normal file
View file

@ -0,0 +1,82 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
colorator (1.1.0)
concurrent-ruby (1.0.5)
cssminify2 (2.0.1)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.2.5)
execjs (2.7.0)
ffi (1.9.23)
forwardable-extended (2.6.0)
htmlcompressor (0.4.0)
http_parser.rb (0.6.0)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jekyll (3.7.3)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 0.7)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
kramdown (~> 1.14)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
jekyll-minifier (0.1.5)
cssminify2 (~> 2.0)
htmlcompressor (~> 0.3)
jekyll (~> 3.5)
uglifier (~> 3.2)
jekyll-paginate (1.1.0)
jekyll-sass-converter (1.5.2)
sass (~> 3.4)
jekyll-watch (2.0.0)
listen (~> 3.0)
kramdown (1.16.2)
libv8 (3.16.14.19)
liquid (4.0.0)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2)
mercenary (0.3.6)
pathutil (0.16.1)
forwardable-extended (~> 2.6)
public_suffix (3.0.2)
rb-fsevent (0.10.3)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
ref (2.0.0)
rouge (3.1.1)
ruby_dep (1.5.0)
safe_yaml (1.0.4)
sass (3.5.6)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
therubyracer (0.12.3)
libv8 (~> 3.16.14.15)
ref
uglifier (3.2.0)
execjs (>= 0.3.0, < 3)
PLATFORMS
ruby
DEPENDENCIES
jekyll
jekyll-minifier
jekyll-paginate
therubyracer
BUNDLED WITH
1.16.1

74
_config.yml Normal file
View file

@ -0,0 +1,74 @@
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely need to edit after that.
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'jekyll serve'. If you change this file, please restart the server process.
# Site settings
title: Safing
encoding: "utf-8"
lang: "en"
email: hello@safing.io
emailobfuscated: "=b!isfg>#nbjmup;ifmmpAtbgjoh/jp#?ifmmpAtbgjoh/jp=0b?"
description: > # this means to ignore newlines until "base_url:"
Safing is a software that protects your privacy online. It's so easy, anyone can use it.
base_url: "/" # the subpath of your site, e.g. /blog
assets_url: "/assets/"
vendor_url: "/vendor/"
community_hub_url: "/community-hub/"
url: "https://safing.io" # the base hostname & protocol for your site
cover: "img/cover.jpg"
logo: "img/logo_name_70h_reduced.png"
twitter_username: SafingIO
github_username: Safing
markdown: kramdown
highlightjs_theme: "monokai_sublime"
paginate: 10
paginate_path: "blog/page:num"
excerpt_separator: "<!--break-->"
inter_post_navigation: false
defaults:
-
scope:
path: "" # an empty string here means all files in the project
type: "posts" # previously `post` in Jekyll 2.2.
values:
layout: "post"
permalink: "blog/post/:year/:month/:title/"
type: "post"
# Social icons and sharing options
#
# Social settings are used in two places:
# * In the footer, as links to your personal profiles
# * After each blog post for sharing widgets
#
# Example:
#
# social:
# - name: Twitter # Name of the service
# icon: twitter # Font Awesome icon to use (minus fa- prefix)
# username: "@SafingIO" # (User) Name to display in the footer link
# url: https://twitter.com/SafingIO # URL of your profile (leave blank to not display in footer)
# desc: Follow us Twitter # Description to display as link title, etc
# share: true # Include in the "Share" section of posts (social_sharing must be true for this)
social_sharing: false
communities:
twitter:
name: Twitter
icon: twitter
username: SafingIO
url: https://twitter.com/SafingIO
desc: Follow me on Twitter
share: false
github:
name: GitHub
icon: github
username: Safing
url: https://github.com/Safing
desc: Fork us on GitHub
share: false

59
_data/community_hub.yml Normal file
View file

@ -0,0 +1,59 @@
communities:
- text: >
### Email Newsletter
Bothered by visiting safing.io every day? Subscribe to our newsletter to stay informed!
#
image:
icon: far fa-envelope-open fa-7x
alt: newsletter
class: color-primary
url: 'https://safing.us13.list-manage.com/subscribe?u=d8e68cb729409a59d97df4790&id=d57e88b8a3'
- text: >
### Twitch
One of our lead developers gives you a look inside his coding shell. Watch the development of Stamp in real time!
#
image:
icon: fab fa-twitch fa-7x
alt: twitch
class: twitch
url: https://twitch.tv/davegson
- text: >
### Discourse
Join our active community, discussing Safing and other privacy related topics in our Online Forum. Because we believe to regain your privacy you need more than just some tools.&nbsp;&nbsp;&nbsp;_[Coming soon... ]_
#
image:
icon: fab fa-discourse fa-7x
alt: discourse
url: '#'
pending: true
- text: >
### Steem
It would be too much to publish our every thought on our main homepage. So we regularly blog about our ideas, guides and discuss worthy topics - all related to privacy - on Steem.
#
image:
path: icons/steem-icon-100x100.png
alt: steem
url: https://steemit.com/@safingio/
- text: >
### Twitter
Want to be part of our Twitter Force? Follow us @SafingIO PMs are closed 😉
#
image:
icon: fab fa-twitter fa-7x
alt: twitter
class: twitter
url: https://twitter.com/SafingIO
- text: >
### Github
Dont like our personalities? Check out our code. Where we try to be our best selves.
#
image:
icon: fab fa-github fa-7x
alt: github
url: https://github.com/Safing

15
_data/header.yml Normal file
View file

@ -0,0 +1,15 @@
menus:
- title: Our Values
url: /our-values/
dropdown: true
submenus:
- title: Privacy First
url: /our-values/
- title: Open Source
url: /our-values/
- title: Ethical Funding
url: /our-values#ethical-funding
- title: Technology
url: /technology/
- title: Download
url: /download/

41
_data/homepage.yml Normal file
View file

@ -0,0 +1,41 @@
statements:
- header: Our Vision
text: Put you back in control of your data.
icon: terminal
- header: Our Mission
text: Give you the opportunity to choose whome you want to share your data with.
icon: rocket
reasoning:
- text: The Internet isn't free, we pay with our data. You can't choose to opt out.
We want to change this. Based on our values.
pitches:
- text: >
### The Solution
We provide you with a simple but powerful tool that manages your connections to the Internet for you. On top of that we make sure that the data sent out is protected from prying eyes on the way to its destination. All this helps to [protect your privacy](/our-values) as best as possible.
#
image:
path: "/icons/level_dynamic.svg"
alt: "Dynamic Level"
- text: >
### Portmaster - Application Firewall
The Portmaster ensures that applications only send data to service providers you trust. This way your device leaks no data. To ensure usability and effectiveness the firewall has pre-configured application profiles which know which connections are required for an optimal and private experience.
<br><br>
[Learn more...](/technology)
# image suggestions https://unsplash.com/photos/ZZuVRXJ90o4
image:
path: "/icons/level_secure.svg"
alt: "Fortress Level"
- text: >
### Port17 - Secure Network
The Port17 Network ensures that the data you send out is safe and private. While active, all your traffic is routed through the secure network, which makes your Internet traffic private and anonymous. As a result websites you visit do not know who you are (unless you tell them) or where you are located, nor does your Internet service provider know where you connect to. And because your privacy is our top priority we built the whole system in such a way, that not even we can feasibly retrace the connections you made.
<br><br>
[Learn more...](/technology)
# image suggestions https://unsplash.com/photos/GA_pY584htc
image:
path: "/icons/level_fortress.svg"
alt: "Fortress Level"

55
_data/roadmap.yml Normal file
View file

@ -0,0 +1,55 @@
elements:
- time: 2016
heading: Finalizing The Concept
body: Think. Discuss. Write. Repeat
icon: gears # font awesome icon
funding_status: null
- time: 2017
heading: "Portmaster: Get back in control!"
body: Decide for yourself which applications share your data
icon: code
funding_status: 2
- time: Q2 2018
heading: Release the first version
body: "First release, finally explore the power of Safing!"
icon: gift
funding_status: null
- time: 2018
heading: "Port17: Private Internet Reimagined"
body: Stop sharing your Internet activities. What you do online is private.
icon: briefcase
funding_status: 1
- time: 2018
heading: Stamp Community
body: The go-to place to share information about websites and Internet entities.
icon: tag
funding_status: 1
drafts:
- time: 2019
heading: "Safing ❤️ Mobile"
body: We will bring the power and convenience of Safing to mobile devices.
icon: mobile
funding_status: 0
- time: 2020
heading: Safing Apps
body: "A framework for apps that feel like they use the cloud, but don't. Stop giving your private data to strangers."
icon: calendar
funding_status: 0
- time: 2021
heading: Truly Secure Communication
body: We will add messaging capabilities to Safing. Full privacy, full anonymity, no metadata.
icon: comments
funding_status: 0
config:
funding:
0:
color_class: "danger"
text: "[FUNDING NEEDED]"
1:
color_class: "warning"
text: "[FUNDING IN PROGRESS]"
2:
color_class: "primary"
text: "[FUNDED]"

View file

@ -0,0 +1,118 @@
---
title: "Safing Guide: Digital Privacy 101"
tags: guide
---
This Guide is updated regularly, future versions will be available under the same URL.
### A word of warning
While this guide is about privacy, it is deeply connected with security and only differs from it in some cases.
Whoever tries to gain security in the digital world will very quickly realize, that the biggest problem is actually a fight between security versus convenience, because in most cases, security is not convenient. Although this is one thing we at Safing thrive to keep out of your as much as possible, there are a lot of things that a software just can't do for you.
This guide starts with the easy and more convenient actions to guard privacy and quite soon will get to things that aren't so convenient and may require some serious work in order to get going.
###
<small>E2/S5/P2</small>
effort
security
probability that this will affect you
## 1 - Turn OFF devices you are not using.
In the past decade, the industry has started to slowly change their devices from having an OFF mode to having a "not really OFF, but still doing things in the background mode".
The current best example would be Smart TVs, with Samsung openly stating, that you should not have confidential conversations near their TVS, because it just might be listening and uploading everything to the Cloud.
**So, get some distributors with a switch, and TURN OFF devices, you are not actively using.**
Yes, it's true, you won't be able to turn on your TV with only a remote anymore.
## Don't type sensitive information on a wireless keyboard.
You me one those, who like sitting on your couch and surfing, ordering stuff on the internet and entering
Well, the thing is, the connection between your wireless keyboard and your device is most certainly not encrypted, your sensitive information is flying in the air and everyone who wants to can catch your stuff out of thin air.
**Never, ever enter sensitive information on a wireless keyboard**
## Do not enter sensitive information into Computers you don't know.
Kiosk or Interet Café PCs.
## Be careful when using untrusted Networks
This includes the network of another company, or a Café WiFi.
## Avoid Data-Hungry Internet Services
This is probably the most challenging, because it hurts convenience the most.
If you can avoid Services like Google (We have Startpage and Duckduckgo!), Facebook (Take a look at Diaspora), Dropbox (Check out MEGA) and other companies that you give massive amounts of data too, but don't pay them a penny.
## Be careful when Services say they use the "Cloud".
In essence, the cloud is just another guys computer, the "Cloud" is such a buzzword, everyone uses it, and you don't know what anyone means by it. Your data may be stored on some random insecure server.
## Use a password manager
Never, ever use the same password with multiple service, use a good password manager, ...
## Be careful when sending sensitive stuff via email.
- Check if service offers SSL
- encrypt sensitive data
- key over 2nd channel
## Use 2-Factor Authentication anywhere you can!
In order to further guard yourself from stolen passwords, use 2-Factor Authentication (2FA) wherever possible. Banks require this if you want to issue transactions online. In principle with 2FA you have to verify your identity with another code, that either changes in short intervals (mostly 30 econds) or somehow acquire a code that can only be used on time.
2FA can be done in a lot of different ways and some are more secure than others, here they are in order of strength:
- Static list of codes
This was used by banks when online banking first started. Consider this your last option.
- Receiving Codes via Text/SMS
This is very widely used technique, but there are several ways to successfully attack this method and steal codes. In 2016 NIST stopped recommending it. You should switch to better alternatives as soon as possible. Sometimes also called smsTAN.
- Receiving Codes via an app.
This is a lot better than receiving codes via Text/SMS; because an app is able to communicate securely and cannot be compromised that easily, but this then depends on the quality of the app.
- Generating Codes with software
This one of the most used methods for 2FA, because it is both easy to set up for websites and rather convenient to use for users. Usually this works by downloading the app Google Authenticator for Android or iOS and scanning a QR-Code with it. The app the generates a new 2FA code every 30 seconds.
- Generating codes with hardware
This is by far the most secure method for 2FA, as an attack MUST physically steal your device and possibly a PIN code. These are mostly used by big companies that care about the security of their IT. One other famous example is the Battle.net Authenticator used by many World of Warcraft players.
Recently, banks have started to adopt this method by using devices into which you pluck your debit card and enter you PIN code to generate a new 2FA code. There are also referred to as chipTAN or cardTAN.
## Email Account is your most important account!
Next to your bank account, your email account is probably your most valuable online account you have. With it you can normally reset any other account that you have. Protect this account with extra care. Choose a password you do not use anywhere else. Enable 2-Factor Authentication. Log out
## Encryption
## Use a good messenger
Find a messenger that protect your privacy. We recommend [...], here is a good comparison of messengers from a security perspective.
## Be careful with email
Email was defined in 19??, back then nobody thought about security or privacy on the Internet. Today we are stuck with an email system that, although a lot of great stuff is done to try to make it more secure, has serious weaknesses. The current email ecosystem offers best effort privacy, but usually there is no way to enforce it.
**Do not send confidential data via email**
If you really want to send private data via email, at least be sure, that the email you are sending to supports minimum security functionality [FIXME: link]
## Avoid Smart Home, for now <small>E2/S5/P2</small>
Smart Home is quite a big hype, with a lot of companies and start-ups bringing new products into this domain. Although there is so much going on here, we at Safing have yet to come across a Smart Home solution that is both open source and really secure. The recent past has shown that most solutions lack security.
#### Appendix: Versions
| Date | Comment |
|:-----------:|--------------:|
| 12 Jun 2012 | First edition |
#### Full References:
08/2016: Smart Home Thermometer hacked: https://thehackernews.com/2016/08/hacking-thermostat.html
08/2016: 75% of Bluetooth Smart Locks can be hacked: http://www.tomsguide.com/us/bluetooth-lock-hacks-defcon2016,news-23129.html

View file

@ -0,0 +1,37 @@
{% include page_divider.html %}
<span class="community-snippet">
<aside>
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3 text-center">
<p class="lead">
{% if page.community_snippet_intro %}
{{ page.community_snippet_intro }}
{% else %}
Interested?&nbsp;&nbsp;&nbsp;Eager?&nbsp;&nbsp;&nbsp;Confused?
{% endif %}
<p>
</div>
</div>
<hr class="primary">
<a href="{{ site.community_hub_url }}">
<div class="row">
<div class="col-md-8 col-md-offset-2 text-center">
<div class="row vertical-align padding-bottom-40">
<div class="col-lg-12 col-xs-12">
<h2>Get involved!</h2>
<p class="lead">
Be&nbsp;part&nbsp;of&nbsp;the&nbsp;team&nbsp;-
<span class="color-primary">
join&nbsp;our&nbsp;community&nbsp;&nbsp;<i class="fa fa-users"></i>
</span>
</p>
</div>
</div>
</div>
</div>
</a>
</div>
</aside>
</span>

26
_includes/foot.html Normal file
View file

@ -0,0 +1,26 @@
<script type="text/javascript">
function debfus(s) {
var n = 0
var r = ""
for( var i = 0; i < s.length; i++)
{
n = s.charCodeAt( i )
if( n >= 8364 )
{
n = 128
}
r += String.fromCharCode( n - 1 )
}
return r
}
document.addEventListener('DOMContentLoaded', function () {
var elements = document.getElementsByClassName("contact-email")
var email = debfus('{{ site.emailobfuscated }}')
for (var i=0, len=elements.length; i<len; i++) {
elements[i].innerHTML = email
}
})
</script>
<script src="{{ site.vendor_url }}js/jquery.js"></script>
<script src="{{ site.vendor_url }}js/bootstrap.min.js"></script>

18
_includes/footer.html Normal file
View file

@ -0,0 +1,18 @@
<section class="footer-section">
<div class="container">
<div class="row text-center">
<div class="footer-col col-lg-4">
<a href="/terms/">Terms & Legal</a>
</div>
<div class="footer-col col-lg-4">
<a href="/community-hub/" class="text-primary">Community Hub</a>
</div>
<div class="footer-col col-lg-4">
<a>
<i class="fa fa-envelope-o"></i>
<span class=" contact-email"><span>
</a>
</div>
</div>
</div>
</section>

35
_includes/head.html Normal file
View file

@ -0,0 +1,35 @@
<!-- meta -->
<meta charset={{ site.encoding }}>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{ site.description }}">
<meta name="author" content="{{ site.author }}">
<title>{% if page.type == "post" %}Safing Blog: {{ page.title }}{% elsif page.title == "Safing" %}{{ page.title }}{% else %}Safing {{ page.title }}{% endif %}</title>
<!-- Favicon and other icons (made with http://www.favicon-generator.org/) -->
<link rel="apple-touch-icon" sizes="57x57" href="{{ site.assets_url }}icons/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="{{ site.assets_url }}icons/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="{{ site.assets_url }}icons/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="{{ site.assets_url }}icons/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="{{ site.assets_url }}icons/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="{{ site.assets_url }}icons/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="{{ site.assets_url }}icons/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="{{ site.assets_url }}icons/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="{{ site.assets_url }}icons/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="{{ site.assets_url }}icons/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="{{ site.assets_url }}icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="{{ site.assets_url }}icons/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="{{ site.assets_url }}icons/favicon-16x16.png">
<link rel="manifest" href="{{ site.assets_url }}icons/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="{{ site.assets_url }}icons/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
<link rel="stylesheet" href="{{ site.vendor_url }}css/bootstrap.min.css" type="text/css">
<link rel="stylesheet" href="{{ site.vendor_url }}css/fontawesome-all.min.css" type="text/css">
<link rel="stylesheet" href="{{ site.vendor_url }}css/font-awesome.min.css" type="text/css">
<link rel="stylesheet" href="{{ site.vendor_url }}css/fonts-roboto.css" type="text/css">
<link rel="stylesheet" href="{{ site.vendor_url }}less/creative.css" type="text/css">
<link rel="stylesheet" href="{{ site.vendor_url }}css/timeline.css" type="text/css">
<link rel="stylesheet" href="{{ site.assets_url }}scss/main.css" type="text/css">

37
_includes/header.html Normal file
View file

@ -0,0 +1,37 @@
<nav id="mainNav" class="navbar navbar-default {% if page.url == site.base_url %}navbar-fixed-top{% else %}navbar-static{% endif %}">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand page-scroll logo-sitename" href="{% if page.url == "/" %}#top{% else %}/{% endif %}">
<img class="logo-name" src="{{ site.assets_url }}{{ site.logo }}" alt="{{ site.title }}">
</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
{% for menu in site.data.header.menus %}
{% if menu.dropdown %}
<li class="dropdown">
<a class="page-scroll" href="{{ menu.url }}">{{ menu.title }}</a>
<ul class="our-values-dropdown dropdown-menu nav navbar-nav navbar-right text-uppercase">
{% for submenu in menu.submenus %}
<li><a href="{{ submenu.url }}"><strong>{{ submenu.title }}</strong></a></li>
{% endfor %}
</ul>
</li>
{% else %}
<li>
<a class="page-scroll" href="{{ menu.url }}">{{ menu.title }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
</div>
</nav>

View file

@ -0,0 +1,11 @@
<header>
<div class="cover-footer text-center">
<i class="fa fa-angle-double-down fa-5x opacity-85"></i>
</div>
<div class="header-content">
<div class="header-content-inner">
<h1 class="header-text">Your digital <span class="color-primary">safe harbor</span></h1>
<a href="/community-hub/" class="btn btn-primary btn-xl page-scroll">Community Hub</a>
</div>
</div>
</header>

View file

@ -0,0 +1,13 @@
<section id="features">
<div class="container">
<div class="row">
<div class="col-md-10 col-md-offset-1">
{% for pitch in site.data.homepage.pitches %}
{% comment %}0 = even (right text), 1 = odd (left text){% endcomment %}
{% assign modulo = forloop.index | modulo: 2 %}
{% include pitch.html %}
{% endfor %}
</div>
</div>
</div>
</section>

View file

@ -0,0 +1,19 @@
<section id="vision-mission">
<div class="container">
<div class="row">
<div class="col-md-10 col-md-offset-1">
{% for statement in site.data.homepage.statements %}
<div class="row vertical-align">
<div class="col-md-2 text-center">
<i class="fa fa-{{ statement.icon }} fa-5x"></i>
</div>
<div class="col-md-6">
<h2>{{ statement.header }}</h2>
<p class="lead">{{ statement.text }}</p>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
</section>

View file

@ -0,0 +1,4 @@
<span class="page-divider">
<span class="one"></span>
<span class="two"></span>
</span>

9
_includes/pitch.html Normal file
View file

@ -0,0 +1,9 @@
<div class="row vertical-align padding-top-40 padding-bottom-40">
{% if modulo == 0 %}
{% include pitch/image.html %}
{% include pitch/text.html %}
{% else %}
{% include pitch/text.html %}
{% include pitch/image.html %}
{% endif %}
</div>

View file

@ -0,0 +1,7 @@
<div class="col-lg-4 col-xs-4 text-center {{ pitch.image.class }}">
{% if pitch.image.path %}
<img class="max-width-100" src="{{ site.assets_url }}{{ pitch.image.path }}" alt="{{ pitch.image.alt }}">
{% elsif pitch.image.icon %}
<i class="{{ pitch.image.icon }}"></i>
{% endif %}
</div>

View file

@ -0,0 +1,3 @@
<div class="col-lg-8 col-xs-8">
{{ pitch.text | markdownify | replace: '<p>','<p class="lead">' }}
</div>

48
_layouts/page.html Normal file
View file

@ -0,0 +1,48 @@
<!DOCTYPE html>
<html lang={{ site.lang }}>
<head>
{% include head.html %}
</head>
<body>
{% include header.html %}
<div>
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
<h1 class="section-heading padding-top-40">
{% if page.heading %}
{{ page.heading }}
{% elsif page.title %}
{{ page.title }}
{% elsif layout.heading %}
{{ layout.heading }}
{% endif %}
</h1>
{% if page.subheading %}
<h3 class="section-subheading text-muted padding-bottom-40">
{% if page.subheading %}
{{ page.subheading }}
{% elsif page.title %}
{% elsif layout.subheading %}
{{ layout.subheading }}
{% endif %}
</h3>
{% endif %}
</div>
</div>
{% if page.include_divider %}
{% include page_divider.html %}
{% endif %}
</div>
{{ content }}
</div>
{% unless page.exclude_community_snippet %}
{% include community_snippet.html %}
{% endunless %}
{% include footer.html %}
</body>
</html>
{% include foot.html %}

10
_layouts/page_column.html Normal file
View file

@ -0,0 +1,10 @@
---
layout: page
---
<div class="container">
<div class="row">
<div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2 padding-top-40">
{{ content }}
</div>
</div>
</div>

View file

@ -0,0 +1,6 @@
---
layout: page_column
---
<span class="markdownpage">
{{ content }}
</span>

91
_layouts/post.html Normal file
View file

@ -0,0 +1,91 @@
---
layout: page_column
title: "Blog"
heading: "Blog"
subheading: "Announcements and things we'd like to share"
---
<div class="post">
<div class="date">
<a href="{{ site.base_url }}blog/all/#{{ page.date | date: "%Y" }}" class="stealth-href">{{ page.date | date: "%-d %b %Y" }}</a>
</div>
<div class="tags">
{% for tag in page.tags %}
<a href="{{ site.base_url }}blog/tags/#{{ tag }}" class="stealth-href"><i class="fa fa-tag fa-flip-horizontal"></i> {{ tag }}</a>
{% endfor %}
</div>
<div class="content">
{{ content | replace: '<!--break-->', '<a class="anchor" id="continue"></a>' }}
</div>
</div>
{% if site.social_sharing == true %}
<section class="share">
<span>Share: </span>
{% for social in site.social %}
{% capture full_url %}{{ site.url }}{{ site.base_url }}{{ page.url }}{% endcapture %}
{% if social.name == "Twitter" and social.share == true %}
<a href="//twitter.com/share?text={{ page.title | cgi_escape }}&url={{ full_url }}&via={{social.username}}"
onclick="window.open(this.href, '{{ social.icon }}-share', 'width=550,height=255');return false;">
<i class="fa fa-{{ social.icon | remove_first: '-square' }}-square fa-lg"></i>
</a>
{% endif %}
{% if social.name == "Facebook" and social.share == true %}
<a href="//www.facebook.com/sharer.php?t={{ page.title | cgi_escape }}&u={{ full_url }}"
onclick="window.open(this.href, '{{ social.icon }}-share', 'width=550,height=255');return false;">
<i class="fa fa-{{ social.icon | remove_first: '-square' }}-square fa-lg"></i>
</a>
{% endif %}
{% if social.name == "Google+" and social.share == true %}
<a href="//plus.google.com/share?title={{ page.title | cgi_escape }}&url={{ full_url }}"
onclick="window.open(this.href, '{{ social.icon }}-share', 'width=550,height=255');return false;">
<i class="fa fa-{{ social.icon | remove_first: '-square' }}-square fa-lg"></i>
</a>
{% endif %}
{% if social.name == "LinkedIn" and social.share == true %}
<a href="//www.linkedin.com/shareArticle?mini=true&url={{ full_url }}"
onclick="window.open(this.href, '{{ social.icon }}-share', 'width=550,height=255');return false;">
<i class="fa fa-{{ social.icon | remove_first: '-square' }}-square fa-lg"></i>
</a>
{% endif %}
{% if social.name == "Pinterest" and social.share == true %}
<a href="//www.pinterest.com/pin/create/button/?description={{ page.title | cgi_escape }}&url={{ full_url }}&media={{ site.url }}{% if page.cover %}{{ page.cover | prepend: site.base_url }}{% elsif site.cover %}{{ site.cover | prepend: site.base_url }}{% else %}{{ site.logo | prepend: site.base_url }}{% endif %}"
onclick="window.open(this.href, '{{ social.icon }}-share', 'width=550,height=255');return false;">
<i class="fa fa-{{ social.icon | remove_first: '-square' }}-square fa-lg"></i>
</a>
{% endif %}
{% if social.name == "Reddit" and social.share == true %}
<a href="//www.reddit.com/submit" onclick="window.location = '//www.reddit.com/submit?url=' + encodeURIComponent('{{ full_url }}') + '&title={{page.title}}'; return false">
<i class="fa fa-{{ social.icon | remove_first: '-square' }}-square fa-lg"></i>
</a>
{% endif %}
{% endfor %}
</section>
{% endif %}
{% if site.inter_post_navigation == true %}
<section class="post-navigation">
<span class="prev-post">
{% if page.previous.url %}
<a href="{{page.previous.url | prepend: site.base_url}}">
<span class="fa-stack fa-lg">
<i class="fa fa-square fa-stack-2x"></i>
<i class="fa fa-angle-double-left fa-stack-1x fa-inverse"></i>
</span>
<span class="page-number">{{page.previous.title}}</span>
</a>
{% endif %}
</span>
<span class="next-post">
{% if page.next.url %}
<a href="{{page.next.url | prepend: site.base_url}}">
<span class="page-number">{{page.next.title}}</span>
<span class="fa-stack fa-lg">
<i class="fa fa-square fa-stack-2x"></i>
<i class="fa fa-angle-double-right fa-stack-1x fa-inverse"></i>
</span>
</a>
{% endif %}
</span>
</section>
{% endif %}

View file

@ -0,0 +1,5 @@
---
title: Launched.
tags: announcement
---
We've finally launched this website. Awesome.

View file

@ -0,0 +1,10 @@
---
title: First Milestone Funded!
tags: announcement
---
We've been successfully funded by [netidee.at](https://www.netidee.at/), a funding initiative by the [Internet Foundation Austria](https://www.nic.at/ipa/).
This gives us the opportunity to kick-start Safing, batteries (hardware and services) included, spanning from for January to December 2017.
We are looking forward to next year and the great time we will have implementing Safing.
![Netidee Logo](/assets/img/netidee.png){: .blog-image }

View file

@ -0,0 +1,45 @@
---
title: Tech Preview Released
tags: announcement
---
We've finally released the tech preview of our first milestone - check it out at [Github](https://github.com/Safing/safing-core)!
Here is quick overview over what we have released so far:
Safing comes in three components:
- Safing Core: The core system doing all the work
- Safing UI: Settings and monitoring
- Safing Notify: Tray icon for fast level switching and notifications
The Safing Core in more detail:
- acts as an intelligent DNS Server
- identifies processes behind connections
- applies profiles to connections and enforces them
- checks TLS connections for validity and revocation
Stay tuned for our upcoming [tech](/blog/tags/#tech) blog series, where we will look at how we built Safing and why we've done things the way we did!
We are looking forward to your feedback!
{% comment %}
Wir haben nun endlich die Tech Preview unseres ersten Meilensteins auf [Github](https://github.com/Safing/safing-core) veröffentlicht!
Hier ist ein kurzer Überblick:
Safing besteht aus drei Komponenten:
- Safing Core: Das Kernsystem, das die ganze Arbeit macht
- Safing UI: Einstellungen und Monitoring
- Safing Notify: Tray-Icon für schnelles Umschalten des Security Levels und Notifications
Der Safing Core:
- ist ein intelligenter DNS Server
- identifiziert Prozesse hinter Verbindungen
- weißt Verbindungen Profile zu und setzt diese durch
- prüft TLS-Verbindungen auf Gültigkeit und Revocation
In der kommenden Blog-Serie werden wir im Detail auf die Komponenten eingehen. Wir freuen uns auf dein Feedback!
{% endcomment %}

View file

@ -0,0 +1,82 @@
---
title: Security Levels
tags: tech
---
Besides strengthening the privacy and security of our users, we strive to make Safing as convenient and easy to use as possible.
The hard part about this is, that we do not expect any technical knowledge of our users, so that even your grandma could use it.
That is why we came up with the concept of Security Levels.
Instead of having a gazillion settings to go through, we use three simple levels that the user can select:
<p align="center">
<img src="/assets/icons/level_dynamic.svg" height="96">
<img src="/assets/icons/level_secure.svg" height="96">
<img src="/assets/icons/level_fortress.svg" height="96">
</p>
<p align="center">
Dynamic
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
Secure
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
Fortress
</p>
#### <img src="/assets/icons/level_dynamic.svg" height="24"> Dynamic:
Day-to-day mode - provides additional security measures to protect your privacy, but will also try to not be in your way to help you stay focused. Use this mode in trusted networks.
#### <img src="/assets/icons/level_secure.svg" height="24"> Secure:
Heightend security measures - to keep you safe in untrusted environments. It is automatically activated if you enter an unknown network, like a café's Wi-Fi, or if an attack is detected. Use this mode when you do not trust a network, or are temporarily in need of more security.
#### <img src="/assets/icons/level_fortress.svg" height="24"> Fortress:
All protective mechanisms available are activated - this will most likely cut off at least some applications from the Internet, but provides best protection technically possible. Use this mode if you think you are currently being attacked, like having clicked on a possible virus.
If you are a technical person, you can of course use our gazillion settings (still growing...) to modify which security and privacy features are active at certain levels, except for the Fortress Level, where every security measure is always active.
If you want to know more about how Safing works, check out our [guides](https://github.com/Safing/safing-doc).
{% comment %}
Neben der Stärkung der Privatsphäre und Sicherheit unserer Nutzer, bemühen wir uns, Safing so bequem und einfach bedienbar wie möglich zu machen.
Das schwere dabei ist, dass wir kein technisches Wissen von unseren Benutzern erwarten, damit auch deine Oma Safing benutzen kann.
Deshalb haben wir das Konzept der Sicherheitslevel eingeführt.
Anstatt unzähligen Einstellungen, verwenden wir drei einfache Level, die der Benutzer auswählen kann:
<p align="center">
<img src="/assets/icons/level_dynamic.svg" height="96">
<img src="/assets/icons/level_secure.svg" height="96">
<img src="/assets/icons/level_fortress.svg" height="96">
</p>
<p align="center">
Dynamic
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
Secure
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
Fortress
</p>
#### <img src="/assets/icons/level_dynamic.svg" height="24"> Dynamic:
Alltäglicher Modus - bietet zusätzliche Sicherheitsmaßnahmen zum Schutz deiner Privatsphäre, wird aber auch versuchen, dir nicht in die Quere zu kommen, damit du deinen Fokus nicht verlierst. Verwende diesen Modus in vertrauenswürdigen Netzwerken.
#### <img src="/assets/icons/level_secure.svg" height="24"> Secure:
Höhere Sicherheitsmaßnahmen - hält dich in nicht vertrauenswürdigen Umgebungen sicher. Dieser Modus wird automatisch aktiviert, wenn du dich mit einem unbekannten Netzwerk - wie das WLAN eines Cafés - verbindest, oder wenn ein Angriff erkannt wird. Verwende diesen Modus, wenn du einem Netzwerk nicht vertraust oder vorübergehend mehr Sicherheit benötigst.
#### <img src="/assets/icons/level_fortress.svg" height="24"> Fortress:
Alle vorhandenen Schutzmechanismen werden aktiviert - das wird höchstwahrscheinlich zumindest einige Anwendungen vom Internet trennen, bietet aber bestmöglichen technischen Schutz. Verwende diesen Modus, wenn du denkst, dass du gerade angegriffen wirst, vielleicht weil du - natürlich versehentlich - den Anhang eine fragwürdigen Email geöffnet hast.
Wenn du technisch begabt bist, gibt es für dich natürlich trotzdem unzählige Einstellungen (noch am werden ...), um zu ändern, welche Sicherheits- und Datenschutzfeatures in bestimmten Levels aktiv sind, mit Ausnahme des Levels Fortress, wo jede Sicherheitsmaßnahme immer aktiv ist.
Wenn du mehr darüber wissen willst, wie Safing funktioniert, schau die unsere [Guides](https://github.com/Safing/safing-doc) an.
{% endcomment %}

View file

@ -0,0 +1,55 @@
---
title: Application Firewall - Profiles
tags: tech
---
We think having a application firewall that constantly prompts you whether an app is allowed to access something on the network is pretty lame - and disrupts your focus.
With Safing, instead of being asked what a program (or a whole group of programs!) is allowed to do, you define its behavior - a profile - once, and let Safing handle the rest.
The most important part about these profiles are the flags you can set - they let you describe the application with just a few clicks, and you can get back to work.
There are flags for:
- the actor: who is executing that application
- the location: Internet or local network?
- the type: select one or more behavioral profiles
The most interesting, and definitely the most used type will be `Strict`. If a profile with this flag is applied to an application, Safing dynamically checks whether the application and the domain it wants to connect to have any kind of relationship to evaluate if the connection to it shall be allowed or not.
Two nice examples of this are:
- Adobe Acrobat: the only valid connection is to the update servers, everything else, like a malicious PDF loading malware, is blocked.
- Various Apps: mostly the only valid connection is to the app's company, 3rd party tracking and ads are blocked.
Profiles will make it a breeze to keep you safe online.
If you want to know more about how Safing works, check out our [guides](https://github.com/Safing/safing-doc).
{% comment %}
Wir denken, dass eine Application Firewall, die dich ständig fragt, ob eine App auf etwas im Netzwerk zugreifen darf, nicht angenehm zu nutzen ist - und den Fokus extrem stört.
Mit Safing definierst du - anstatt andauernd gefragt zu werden - einmal ein Verhaltensprofil für eine App und lässt Safing den Rest erledigen.
Das beste an diesen Profilen sind die Flags, die du setzen kannst - mit diesen kannst du ganz schnell und unkompliziert für eine App ein bestimmtes Verhalten definieren und wieder an deine Arbeit gehen.
Es gibt Flags für:
- den Akteur: wer führt die App aus?
- den Ort: Internet oder lokales Netzwerk?
- der Typ: um was für eine App handelt es sich?
Eine der interessantesten Flags ist sicherlich `Strict`. Wenn ein Profil mit diesem Flag auf eine App angewendet wird, prüft Safing dynamisch, ob die Anwendung und die Domain, mit der sie eine Verbindung herstellen möchte, irgendeine Art von Beziehung haben, um zu bewerten, ob die Verbindung zu ihr erlaubt ist oder nicht.
Zwei schöne Beispiele dafür sind:
- Adobe Acrobat: Die einzige gültige Verbindung ist zum Update-Server, alles andere, wie das Herunterladen von Malware von einer fremden Domain, wird blockiert.
- Verschiedene Apps: meistens sind die einzigen gültigen Verbindungen zum Unternehmen der App, Tracking und Werbung wird blockiert.
Profile machen es zu einem Kinderspiel, sicher und privat im Internet unterwegs zu sein.
Wenn du mehr darüber wissen willst, wie Safing funktioniert, schau dir unsere [Guides](https://github.com/Safing/safing-doc) an.
Die englische Version dieses Posts findest du [hier](https://safing.me/blog/post/2017/08/application-profiles/).
{% endcomment %}

View file

@ -0,0 +1,27 @@
---
title: DNS Resolution
tags: tech
---
DNS is an inherently insecure part of the Internet ecosystem. It was never designed to be secure and any security enhancements are adapted only at a very slow rate. In order to mitigate possible threats that take advantage of the insecurity of DNS, Safing transparently takes over resolving DNS queries.
One thing Safing does, is to use altenative DNS transport protocols, to ensure that DNS packets aren't being tampered with. Currently we have added support for Google's DNS over HTTPS service, and will soon also support T-DNS, whish is DNS over TCP/TLS.
In addition to protecting DNS transport, Safing uses intelligent query routing to get queries directly to the best available server that can answer them. This minimizes exposing queries to servers that could not answer them (securely) anyway.
If you want to know more about how Safing works, check out our [guides](https://github.com/Safing/safing-doc).
{% comment %}
DNS ist ein grundlegender, aber unsicherer Teil des Internet-Ökosystems. Es wurde niemals dafür konzipiert sicher zu sein und jegliche Sicherheitsverbesserungen finden nur sehr langsam Verbreitung. Um mögliche Bedrohungen, die die Unsicherheit von DNS ausnutzen, zu verringern, übernimmt Safing transparent die Beantwortung von DNS-Anfragen.
Etwas was Safing tut, um DNS sicherer zu machen, ist auf alternative DNS-Transportprotokolle zu setzen. So können wir sicherstellen dass die DNS-Pakete nicht manipuliert werden. Derzeit unterstützen wir das "DNS over HTTPS" Service von Google, und bald auch T-DNS (DNS over TCP / TLS).
Zusätzlich zum Schutz des DNS-Transports leitet Safing DNS-Anfragen intelligent an den best-verfügbaren Server, der sie auch beantworten kann. Dadurch geben wir dem Netzwek möglichst wenig Informationen preis.
Wenn du mehr darüber wissen willst, wie Safing funktioniert, schau dir unsere [Guides](https://github.com/Safing/safing-doc) an.
Die englische Version dieses Posts findest du [hier](https://safing.me/blog/post/2017/08/dns-resolution/).
{% endcomment %}

View file

@ -0,0 +1,23 @@
---
title: TLS Enforcement
tags: tech
---
Sadly, the current state-of-the-art for security software is to intercept and break (man-in-the-middle) TLS connections to scan the content they carry. Sometimes this has even been done by big manufacturers to inject ads into encrypted web traffic. What makes matters even worse, is that a lot of times, the intercepting software does not correctly verify TLS connections and made the user vulnerable to real attacks.
Safing goes the exact opposite way. Instead of breaking TLS, Safing enforces valid TLS connections, by inspecting traffic and verifying certificates, checking revocation and Certificate Transparency. With Safing you do not longer need to trust your OS or applications alone, because Safing acts as an additional security check for TLS.
If you want to know more about how Safing works, check out our [guides](https://github.com/Safing/safing-doc).
{% comment %}
Traurigerweise ist der aktuelle "Stand der Technik", dass Sicherheitssoftware TLS-Verbindungen aufbricht um den Inhalt darin zu scannen. Es ist auch vorgekommen, dass große Hersteller TLS-Verbindungen aufgebrochen haben, um zum Beispiel auf den von ihnen verkauften Geräten Werbung anzuzeigen. Was die ganze Sache dann eigentlich zur großen Gefahr gemacht hat, ist dass die TLS-aufbrechende Software in so einigen Fällen die TLS-Verbindungen nicht korrekt geprüft hat, und Nutzer somit anfällig für echte Angriffe waren.
Safing geht den genau umgekehrten Weg. Anstatt TLS aufzubrechen, erzwingt Safing gültige und gute TLS-Verbindungen, indem Verbindungen und Zertifikate gründlich geprüft werden. Mit Safing musst du also nicht länger nur deinem Betriebssystem oder Apps vertrauen, denn Safing macht einen zusätzlichen Sicherheitscheck für TLS.
Wenn du mehr darüber wissen willst, wie Safing funktioniert, schau dir unsere [Guides](https://github.com/Safing/safing-doc) an.
Die englische Version dieses Posts findest du [hier](https://safing.me/blog/post/2017/08/tls-enforcement/).
{% endcomment %}

44
_sass/_community.scss Normal file
View file

@ -0,0 +1,44 @@
.community-snippet {
.lead {
font-size: 1.7em;
}
aside {
background-color: $color_alabaster_approx;
}
hr {
max-width: 750px;
margin: 0 auto;
}
a {
color: $color_mine_shaft_approx;
&:hover > div {
background-color: $color_gallery_approx;
border-radius: 15px;
}
}
}
.community-hub {
a {
color: $color_mine_shaft_approx;
&:hover > div {
background-color: $color_gallery_approx;
border-radius: 35px;
}
}
padding-bottom: 20px;
}
.twitch {
color: #6441a5;
}
.twitter {
color: #00aced;
}

10
_sass/_footer.scss Normal file
View file

@ -0,0 +1,10 @@
.footer-section {
width: 100%;
background-color: $color_celeste_approx;
padding: 15px 0;
border-top: 1px solid $color_pink_swan_approx;
a {
color: $color_tapa_approx;
}
}

120
_sass/_global.scss Normal file
View file

@ -0,0 +1,120 @@
body {
font-family: 'Roboto' !important;
}
.color-primary {
color: $primary;
}
.color-primary-important {
color: $primary !important;
}
.vertical-align {
display: flex;
align-items: center;
}
.max-width-100 {
max-width: 100%;
}
.page-divider {
display: block;
width: 100%;
margin-left: auto;
margin-right: auto;
border-top: 0;
border-bottom: 1px solid $color_alto_approx;
.one {
position: relative;
top: 25px;
display: block;
background: $color_alto_approx;
width: 18px;
height: 18px;
margin-left: auto;
margin-right: auto;
border-radius: 50%;
}
.two {
position: relative;
top: 8px;
display: block;
background: $white;
width: 16px;
height: 16px;
margin-left: auto;
margin-right: auto;
border-radius: 50%;
}
}
.padding-top-10 { padding-top: 10px; }
.padding-top-20 { padding-top: 20px; }
.padding-top-40 { padding-top: 40px; }
.padding-top-60 { padding-top: 60px; }
.padding-top-80 { padding-top: 80px; }
.padding-top-100 { padding-top: 100px; }
.padding-right-10 { padding-right: 10px; }
.padding-right-20 { padding-right: 20px; }
.padding-right-40 { padding-right: 40px; }
.padding-right-60 { padding-right: 60px; }
.padding-right-80 { padding-right: 80px; }
.padding-right-100 { padding-right: 100px; }
.padding-bottom-10 { padding-bottom: 10px; }
.padding-bottom-20 { padding-bottom: 20px; }
.padding-bottom-40 { padding-bottom: 40px; }
.padding-bottom-60 { padding-bottom: 60px; }
.padding-bottom-80 { padding-bottom: 80px; }
.padding-bottom-100 { padding-bottom: 100px; }
.padding-left-10 { padding-left: 10px; }
.padding-left-20 { padding-left: 20px; }
.padding-left-40 { padding-left: 40px; }
.padding-left-60 { padding-left: 60px; }
.padding-left-80 { padding-left: 80px; }
.padding-left-100 { padding-left: 100px; }
.margin-top-10 { margin-top: 10px; }
.margin-top-20 { margin-top: 20px; }
.margin-top-40 { margin-top: 40px; }
.margin-top-60 { margin-top: 60px; }
.margin-top-80 { margin-top: 80px; }
.margin-top-100 { margin-top: 100px; }
.margin-right-10 { margin-right: 10px; }
.margin-right-20 { margin-right: 20px; }
.margin-right-40 { margin-right: 40px; }
.margin-right-60 { margin-right: 60px; }
.margin-right-80 { margin-right: 80px; }
.margin-right-100 { margin-right: 100px; }
.margin-bottom-10 { margin-bottom: 10px; }
.margin-bottom-20 { margin-bottom: 20px; }
.margin-bottom-40 { margin-bottom: 40px; }
.margin-bottom-60 { margin-bottom: 60px; }
.margin-bottom-80 { margin-bottom: 80px; }
.margin-bottom-100 { margin-bottom: 100px; }
.margin-left-10 { margin-left: 10px; }
.margin-left-20 { margin-left: 20px; }
.margin-left-40 { margin-left: 40px; }
.margin-left-60 { margin-left: 60px; }
.margin-left-80 { margin-left: 80px; }
.margin-left-100 { margin-left: 100px; }
.opacity-85 {
opacity: 0.85;
}
.text-light {
opacity: $opacity-light;
}
.text-lighter {
opacity: $opacity-lighter;
}
.note-light {
font-style: italic;
opacity: $opacity-light;
}

108
_sass/_header.scss Normal file
View file

@ -0,0 +1,108 @@
.header-content {
top: 35% !important;
}
.header-text {
font-size: 55px;
text-transform: none !important;
color: $white;
padding-bottom: 20px;
}
.header-button {
color: $white;
background-color: transparent;
border: 2px solid $white;
&:hover {
background-color: $primary;
color: $white;
border: 2px solid $primary;
}
}
.navbar-static {
background-color: $white;
margin-bottom: 0;
border-radius: 0;
border-bottom: 2px solid $primary;
.nav > li > a {
color: $color_mine_shaft_approx;
&:focus {
color: $color_mine_shaft_approx;
}
&:hover {
color: $primary;
}
}
}
.logo-sitename {
display: inline-block;
padding: 7px;
padding-left: 16px;
height: 100%;
&:hover {
text-decoration: none;
}
> h3 {
display: inline;
vertical-align: middle;
}
img {
max-height: 35px;
margin-top: 0.75em;
padding-right: 1em;
vertical-align: middle;
border: 0;
margin: 0;
}
}
@media(min-width: 768px) {
ul.nav li.dropdown:hover > ul.dropdown-menu {
display: block;
}
}
.our-values-dropdown {
background-color: #ffffffce;
}
.dropdown .nav > li > a {
color: $color_mine_shaft_approx;
&:focus {
color: $color_mine_shaft_approx;
}
&:hover {
color: $primary;
}
}
header {
.cover-footer {
width: 100%;
height: 50px;
position: absolute;
bottom: 35px;
padding: 0 35px;
.btn {
float: right;
}
}
i {
color: #fff0;
@media(min-width: 768px) {
color: inherit;
}
}
}

30
_sass/_homepage.scss Normal file
View file

@ -0,0 +1,30 @@
#features {
padding-top: 0px;
p {
padding-top: 5px;
padding-bottom: 5px;
}
}
#vision-mission {
padding-bottom: 30px;
padding-top: 60px;
@media(min-width: 768px) {
.row.vertical-align {
&:last-child {
margin-left: 110px;
}
@media(min-width: 990px) {
div:first-child {
padding: 0;
}
div:last-child {
padding-left: 0;
}
}
}
}
}

97
_sass/_post.scss Normal file
View file

@ -0,0 +1,97 @@
.post {
.date {
float: right;
padding: 2px;
}
.tags {
> a {
display: inline-block;
background-color: $color_gallery_approx;
border-radius: 3px;
padding: 2px;
padding-left: 9px;
padding-right: 9px;
}
i {
color: $color_tapa_approx;
}
}
.blog-image {
width: 70%;
margin-left: 15%;
}
ul {
margin-top: -15px;
margin-bottom: 20px;
}
a.anchor {
display: block;
position: relative;
top: -99px;
visibility: hidden;
}
}
.no-border {
border-top: none !important;
border: none;
> td {
border-top: none !important;
border: none;
}
}
.pagination {
width: 100%;
text-align: center;
padding: 40px;
color: $color_tapa_approx;
}
.stealth-href {
color: $color_mine_shaft_approx;
&:hover {
text-decoration: none;
color: $primary;
}
}
.markdownpage {
p {
padding-top: 5px;
padding-bottom: 5px;
}
li {
font-size: 16px;
padding-bottom: 4px;
}
h5 {
font-size: 16px;
line-height: 24px;
font-weight: bold;
}
h6 {
font-size: 16px;
line-height: 24px;
}
hr {
margin-top: 40px;
margin-bottom: 40px;
}
.footnotes p {
margin: 0 !important;
padding: 0 !important;
}
}

14
_sass/_terms.scss Normal file
View file

@ -0,0 +1,14 @@
.contact-image {
text-align: center;
overflow: hidden;
img {
width: 100%;
}
}
.contact-text {
color: $color_tundora_approx;
padding-top: 20px;
padding-bottom: 40px;
line-height: 2;
}

19
_sass/_variables.scss Normal file
View file

@ -0,0 +1,19 @@
$primary: #1fa787 !default;
$email_user: 'hello' !default;
$email_domain: 'safing.io' !default;
$color_mine_shaft_approx: #333 !default;
$color_alto_approx: #ddd !default;
$color_celeste_approx: #ccc !default;
$color_pink_swan_approx: #bababa !default;
$color_tapa_approx: #777 !default;
$color_tundora_approx: #444 !default;
$color_gallery_approx: #eee !default;
$color_alabaster_approx: #f9f9f9 !default;
$color_royal_purple_approx: rebeccapurple !default;
$white: #ffffff !default;
$opacity-light: 0.7;
$opacity-lighter: 0.5;

Binary file not shown.

After

(image error) Size: 8.1 KiB

Binary file not shown.

After

(image error) Size: 9.1 KiB

Binary file not shown.

After

(image error) Size: 2.2 KiB

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 3.9 KiB

Binary file not shown.

After

(image error) Size: 5.2 KiB

Binary file not shown.

After

(image error) Size: 6.2 KiB

Binary file not shown.

After

(image error) Size: 6.5 KiB

Binary file not shown.

After

(image error) Size: 8.1 KiB

Binary file not shown.

After

(image error) Size: 8.6 KiB

Binary file not shown.

After

(image error) Size: 11 KiB

Binary file not shown.

After

(image error) Size: 3.3 KiB

Binary file not shown.

After

(image error) Size: 3.5 KiB

Binary file not shown.

After

(image error) Size: 3.9 KiB

Binary file not shown.

After

(image error) Size: 4.2 KiB

Binary file not shown.

After

(image error) Size: 9.6 KiB

BIN
assets/icons/apple-icon.png Normal file

Binary file not shown.

After

(image error) Size: 9.6 KiB

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>

Binary file not shown.

After

(image error) Size: 1.4 KiB

Binary file not shown.

After

(image error) Size: 2 KiB

Binary file not shown.

After

(image error) Size: 5.2 KiB

BIN
assets/icons/favicon.ico Normal file

Binary file not shown.

After

Width: 16px  |  Height: 16px  |  Size: 1.1 KiB

View file

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="960px"
height="960px" viewBox="0 0 960 960" enable-background="new 0 0 960 960" xml:space="preserve">
<g id="BG" display="none">
</g>
<g id="Raster">
</g>
<g id="Ebene_1">
<g opacity="0.8">
<defs>
<path id="SVGID_4_" opacity="0.8" d="M1619,1602.34v-206.913l59-13.427v-212l-61-61h-212l-12.988,58h-209.813L1169,1109H957
l-61,61v212l61,13.66v206.686L897,1616v212l61,61h212l13.437-60h209.909l13.654,60h212l61-61v-212L1619,1602.34z M1079,1707v-418
h418v418H1079z"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_4_" overflow="visible"/>
</clipPath>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="1287" y1="1977" x2="1287" y2="1018.1655">
<stop offset="0" style="stop-color:#000000"/>
<stop offset="1" style="stop-color:#FFFFFF"/>
</linearGradient>
<rect x="807" y="1017" opacity="0.2" clip-path="url(#SVGID_2_)" fill="url(#SVGID_3_)" stroke="#7A276E" stroke-width="140" stroke-linejoin="bevel" stroke-miterlimit="10" width="960" height="960"/>
</g>
<g>
<path fill="#00BF84" d="M481,251.129c60.867,0,118.09,23.703,161.129,66.742c43.039,43.04,66.742,100.263,66.742,161.129
c0,60.866-23.703,118.09-66.742,161.13C599.09,683.169,541.867,706.871,481,706.871c-60.866,0-118.09-23.702-161.129-66.741
c-43.04-43.04-66.742-100.263-66.742-161.13s23.702-118.09,66.742-161.129C362.91,274.832,420.134,251.129,481,251.129
M481,91.129C266.785,91.129,93.129,264.784,93.129,479S266.785,866.871,481,866.871S868.871,693.216,868.871,479
S695.215,91.129,481,91.129L481,91.129z"/>
</g>
<g opacity="0.6">
<defs>
<path id="SVGID_19_" opacity="0.6" d="M481,251.129c60.867,0,118.09,23.703,161.129,66.741
c43.039,43.04,66.742,100.264,66.742,161.13s-23.703,118.09-66.742,161.13C599.09,683.168,541.867,706.871,481,706.871
c-60.866,0-118.09-23.703-161.129-66.741c-43.04-43.04-66.742-100.263-66.742-161.13s23.702-118.09,66.742-161.13
C362.91,274.832,420.134,251.129,481,251.129 M481,91.129C266.785,91.129,93.129,264.784,93.129,479S266.785,866.871,481,866.871
S868.871,693.216,868.871,479S695.215,91.129,481,91.129L481,91.129z"/>
</defs>
<clipPath id="SVGID_5_">
<use xlink:href="#SVGID_19_" overflow="visible"/>
</clipPath>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="481" y1="960" x2="481" y2="1.166">
<stop offset="0" style="stop-color:#000000"/>
<stop offset="1" style="stop-color:#FFFFFF"/>
</linearGradient>
<rect x="1" opacity="0.2" clip-path="url(#SVGID_5_)" fill="url(#SVGID_6_)" width="960" height="960"/>
</g>
</g>
</svg>

After

(image error) Size: 2.9 KiB

View file

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="960px"
height="960px" viewBox="0 0 960 960" enable-background="new 0 0 960 960" xml:space="preserve">
<g id="BG" display="none">
</g>
<g id="Raster">
</g>
<g id="Ebene_1">
<g opacity="0.8">
<defs>
<path id="SVGID_4_" opacity="0.8" d="M1619,1602.34v-206.913l59-13.427v-212l-61-61h-212l-12.988,58h-209.813L1169,1109H957
l-61,61v212l61,13.66v206.686L897,1616v212l61,61h212l13.437-60h209.909l13.654,60h212l61-61v-212L1619,1602.34z M1079,1707v-418
h418v418H1079z"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_4_" overflow="visible"/>
</clipPath>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="1287" y1="1977" x2="1287" y2="1018.1655">
<stop offset="0" style="stop-color:#000000"/>
<stop offset="1" style="stop-color:#FFFFFF"/>
</linearGradient>
<rect x="807" y="1017" opacity="0.2" clip-path="url(#SVGID_2_)" fill="url(#SVGID_3_)" stroke="#7A276E" stroke-width="140" stroke-linejoin="bevel" stroke-miterlimit="10" width="960" height="960"/>
</g>
<g>
<rect x="211" y="209" fill="none" stroke="#8711CC" stroke-width="120" stroke-linejoin="bevel" stroke-miterlimit="10" width="540" height="540"/>
<polygon fill="none" stroke="#8711CC" stroke-width="122" stroke-linejoin="bevel" stroke-miterlimit="10" points="363,809
301.5,780 181,780 181,659.5 151,597 151,809 "/>
<polygon fill="none" stroke="#8711CC" stroke-width="122" stroke-linejoin="bevel" stroke-miterlimit="10" points="150,363
179,301.5 179,181 299.5,181 362,151 150,151 "/>
<polygon fill="none" stroke="#8711CC" stroke-width="122" stroke-linejoin="bevel" stroke-miterlimit="10" points="598,151
659.5,180 780,180 780,300.5 810,363 810,151 "/>
<polygon fill="none" stroke="#8711CC" stroke-width="122" stroke-linejoin="bevel" stroke-miterlimit="10" points="812,597
783,658.5 783,779 662.5,779 600,809 812,809 "/>
</g>
<g opacity="0.8">
<defs>
<path id="SVGID_7_" opacity="0.8" d="M812,583.34V376.427L871,363V151l-61-61H598l-12.988,58H375.199L362,90H150l-61,61v212
l61,13.66v206.686L90,597v212l61,61h212l13.437-60h209.909L600,870h212l61-61V597L812,583.34z M272,688V270h418v418H272z"/>
</defs>
<clipPath id="SVGID_5_">
<use xlink:href="#SVGID_7_" overflow="visible"/>
</clipPath>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="480.0005" y1="958" x2="480.0005" y2="-0.834">
<stop offset="0" style="stop-color:#000000"/>
<stop offset="1" style="stop-color:#FFFFFF"/>
</linearGradient>
<rect y="-2" opacity="0.2" clip-path="url(#SVGID_5_)" fill="url(#SVGID_6_)" stroke="#7A276E" stroke-width="140" stroke-linejoin="bevel" stroke-miterlimit="10" width="960" height="960"/>
</g>
</g>
</svg>

After

(image error) Size: 3 KiB

View file

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="960px"
height="960px" viewBox="0 0 960 960" enable-background="new 0 0 960 960" xml:space="preserve">
<g id="BG" display="none">
</g>
<g id="Raster">
</g>
<g id="Ebene_1">
<g opacity="0.8">
<defs>
<path id="SVGID_4_" opacity="0.8" d="M1619,1602.34v-206.913l59-13.427v-212l-61-61h-212l-12.988,58h-209.813L1169,1109H957
l-61,61v212l61,13.66v206.686L897,1616v212l61,61h212l13.437-60h209.909l13.654,60h212l61-61v-212L1619,1602.34z M1079,1707v-418
h418v418H1079z"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_4_" overflow="visible"/>
</clipPath>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="1287" y1="1977" x2="1287" y2="1018.1655">
<stop offset="0" style="stop-color:#000000"/>
<stop offset="1" style="stop-color:#FFFFFF"/>
</linearGradient>
<rect x="807" y="1017" opacity="0.2" clip-path="url(#SVGID_2_)" fill="url(#SVGID_3_)" stroke="#7A276E" stroke-width="140" stroke-linejoin="bevel" stroke-miterlimit="10" width="960" height="960"/>
</g>
<g>
<polygon fill="none" stroke="#B70B0B" stroke-width="100" stroke-linejoin="bevel" stroke-miterlimit="10" points="
763.447,826.871 827.371,763.995 196.517,135.762 134.689,198.113 "/>
<polygon fill="none" stroke="#B70B0B" stroke-width="100" stroke-linejoin="bevel" stroke-miterlimit="10" points="
133.379,761.637 196.255,825.562 824.488,194.708 762.137,132.879 "/>
</g>
<g opacity="0.4">
<defs>
<polygon id="SVGID_22_" opacity="0.4" points="612.992,477.948 860.917,228.989 860.694,158.204 798.343,96.375 727.781,96.524
479.397,344.907 232.799,99.333 162.013,99.556 100.185,161.907 100.334,232.469 346.085,478.22 99.024,725.281 98.733,795.698
161.609,859.623 232.685,859.843 479.682,611.815 729.092,861.227 799.51,861.518 863.434,798.642 863.652,727.566 "/>
</defs>
<clipPath id="SVGID_5_">
<use xlink:href="#SVGID_22_" overflow="visible"/>
</clipPath>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="479.0005" y1="959" x2="479.0005" y2="0.166">
<stop offset="0" style="stop-color:#000000"/>
<stop offset="1" style="stop-color:#FFFFFF"/>
</linearGradient>
<rect x="-1" y="-1" opacity="0.2" clip-path="url(#SVGID_5_)" fill="url(#SVGID_6_)" width="960" height="960"/>
</g>
</g>
</svg>

After

(image error) Size: 2.6 KiB

View file

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="960px"
height="960px" viewBox="0 0 960 960" enable-background="new 0 0 960 960" xml:space="preserve">
<g id="BG" display="none">
</g>
<g id="Raster">
</g>
<g id="Ebene_1">
<polygon fill="none" stroke="#0080FF" stroke-width="140" stroke-linejoin="bevel" stroke-miterlimit="10" points="843.338,184
479.896,813.5 116.455,184 "/>
<g opacity="0.7">
<defs>
<path id="SVGID_4_" opacity="0.7" d="M540.518,848.5H419.273L55.833,218.75l60.622-105.25h726.883l60.622,105.25L540.518,848.5z
M237.699,253.5L479.896,673l242.198-419.5H237.699z"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_4_" overflow="visible"/>
</clipPath>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="480.5005" y1="958.5" x2="480.5005" y2="-0.334">
<stop offset="0" style="stop-color:#000000"/>
<stop offset="1" style="stop-color:#FFFFFF"/>
</linearGradient>
<rect x="0.5" y="-1.5" opacity="0.2" clip-path="url(#SVGID_2_)" fill="url(#SVGID_3_)" stroke="#4182C2" stroke-miterlimit="10" width="960" height="960"/>
<use xlink:href="#SVGID_4_" overflow="visible" fill="none" stroke="#4182C2" stroke-miterlimit="10"/>
</g>
<g opacity="0.8">
<defs>
<path id="SVGID_7_" opacity="0.8" d="M1619,1602.34v-206.913l59-13.427v-212l-61-61h-212l-12.988,58h-209.813L1169,1109H957
l-61,61v212l61,13.66v206.686L897,1616v212l61,61h212l13.437-60h209.909l13.654,60h212l61-61v-212L1619,1602.34z M1079,1707v-418
h418v418H1079z"/>
</defs>
<clipPath id="SVGID_5_">
<use xlink:href="#SVGID_7_" overflow="visible"/>
</clipPath>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="1287" y1="1977" x2="1287" y2="1018.1655">
<stop offset="0" style="stop-color:#000000"/>
<stop offset="1" style="stop-color:#FFFFFF"/>
</linearGradient>
<rect x="807" y="1017" opacity="0.2" clip-path="url(#SVGID_5_)" fill="url(#SVGID_6_)" stroke="#7A276E" stroke-width="140" stroke-linejoin="bevel" stroke-miterlimit="10" width="960" height="960"/>
</g>
</g>
</svg>

After

(image error) Size: 2.4 KiB

View file

@ -0,0 +1,41 @@
{
"name": "App",
"icons": [
{
"src": "\/android-icon-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "\/android-icon-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "\/android-icon-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "\/android-icon-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "\/android-icon-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "\/android-icon-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"
}
]
}

Binary file not shown.

After

(image error) Size: 8.1 KiB

Binary file not shown.

After

(image error) Size: 8.5 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 3.8 KiB

Binary file not shown.

After

(image error) Size: 8.9 KiB

BIN
assets/img/_cover_2.jpg Normal file

Binary file not shown.

After

(image error) Size: 790 KiB

BIN
assets/img/_cover_3.jpg Normal file

Binary file not shown.

After

(image error) Size: 12 MiB

Binary file not shown.

After

(image error) Size: 272 KiB

BIN
assets/img/_cover_orig.jpg Normal file

Binary file not shown.

After

(image error) Size: 123 KiB

BIN
assets/img/_kitzbuehel.jpg Normal file

Binary file not shown.

After

(image error) Size: 3 MiB

BIN
assets/img/_logo_name.png Normal file

Binary file not shown.

After

(image error) Size: 51 KiB

Binary file not shown.

After

(image error) Size: 7.9 KiB

Binary file not shown.

After

(image error) Size: 19 KiB

BIN
assets/img/contact_img.jpg Normal file

Binary file not shown.

After

(image error) Size: 361 KiB

BIN
assets/img/cover.jpg Normal file

Binary file not shown.

After

(image error) Size: 408 KiB

Binary file not shown.

After

(image error) Size: 2.6 KiB

BIN
assets/img/netidee.png Normal file

Binary file not shown.

After

(image error) Size: 56 KiB

12
assets/scss/main.scss Executable file
View file

@ -0,0 +1,12 @@
---
---
@import "variables.scss";
@import "community.scss";
@import "footer.scss";
@import "global.scss";
@import "header.scss";
@import "post.scss";
@import "terms.scss";
@import "homepage.scss";

34
blog/all/index.html Normal file
View file

@ -0,0 +1,34 @@
---
layout: page_column
title: "Blog"
heading: "Blog"
subheading: "sorted by date"
---
<div class="padding-top-40 padding-bottom-80">
<table class="post-list table table-condensed">
{% for post in site.posts %}
{% assign postyear = post.date | date: "%Y" %}
<tr class="post">
{% ifchanged postyear %}
<td class="no-border">
<h2 class="padding-top-20">{{ postyear }}</h2>
</td>
<td class="no-border"></td>
<td class="no-border"></td>
</tr>
<tr class="post no-border">
{% endifchanged %}
<td><a href="{{ site.base_url }}{{ post.url | replace_first: '/', '' }}" class="stealth-href">{{ post.title }}</a></td>
<td>
<span class="tags">
{% for tag in post.tags %}
<a href="{{ site.base_url }}blog/tags/#{{ tag }}" class="stealth-href"><i class="fa fa-tag fa-flip-horizontal"></i> {{ tag }}</a>
{% endfor %}
</span>
</td>
<td class="text-right">{{ post.date | date: "%-d %b %Y" }}</td>
</tr>
{% endfor %}
</table>
</div>

83
blog/index.html Normal file
View file

@ -0,0 +1,83 @@
---
layout: page_column
title: "Blog"
heading: "Blog"
subheading: "Announcements and things we'd like to share"
---
<div class="post-list">
{% for post in site.posts limit:10 %}
<div class="post">
{% include page_divider.html %}
<h3 class="padding-top-20"><a href="{{ site.base_url }}{{ post.url | replace_first: '/', '' }}" class="stealth-href">{{ post.title }}</a></h3>
<div class="date">
<a href="{{ site.base_url }}blog/all/#{{ post.date | date: "%Y" }}" class="stealth-href">{{ post.date | date: "%-d %b %Y" }}</a>
</div>
<div class="tags">
{% for tag in post.tags %}
<a href="{{ site.base_url }}blog/tags/#{{ tag }}" class="stealth-href"><i class="fa fa-tag fa-flip-horizontal"></i> {{ tag }}</a>
{% endfor %}
</div>
<div class="content padding-top-20">
{{ post.excerpt }}
{% capture content_words %}
{{ post.content | number_of_words }}
{% endcapture %}
{% capture excerpt_words %}
{{ post.excerpt | number_of_words }}
{% endcapture %}
{% if excerpt_words != content_words %}
<p>
<a href="{{ site.base_url }}{{ post.url | replace_first: '/', '' }}#continue" class="pull-right">continue reading <i class="fa fa-arrow-right main-color-l1"></i></a>
</p>
{% endif %}
</div>
</div>
{% endfor %}
</div>
<nav class="pagination" role="navigation">
<p>
{% if paginator.next_page %}
<a class="newer-posts" href="{{ site.base_url }}blog/page{{paginator.next_page}}">
<span class="fa-stack fa-lg">
<i class="fa fa-square fa-stack-2x"></i>
<i class="fa fa-angle-double-left fa-stack-1x fa-inverse"></i>
</span>
</a>
{% else %}
<span class="fa-stack fa-lg">
<i class="fa fa-square fa-stack-2x"></i>
<i class="fa fa-angle-double-left fa-stack-1x fa-inverse"></i>
</span>
{% endif %}
<span class="page-number">Page {{ paginator.page }} of {{ paginator.total_pages }}</span>
{% if paginator.previous_page %}
{% if paginator.page == 2 %}
<a class="newer-posts" href="{% if site.base_url %}{{ site.base_url }}{% endif %}/">
<span class="fa-stack fa-lg">
<i class="fa fa-square fa-stack-2x"></i>
<i class="fa fa-angle-double-right fa-stack-1x fa-inverse"></i>
</span>
</a>
{% else %}
<a class="newer-posts" href="{{ site.base_url }}blog/page{{paginator.previous_page}}">
<span class="fa-stack fa-lg">
<i class="fa fa-square fa-stack-2x"></i>
<i class="fa fa-angle-double-right fa-stack-1x fa-inverse"></i>
</span>
</a>
{% endif %}
{% else %}
<span class="fa-stack fa-lg">
<i class="fa fa-square fa-stack-2x"></i>
<i class="fa fa-angle-double-right fa-stack-1x fa-inverse"></i>
</span>
{% endif %}
</p>
</nav>

42
blog/tags/index.html Normal file
View file

@ -0,0 +1,42 @@
---
layout: page_column
title: "Blog"
heading: "Blog"
subheading: "sorted by tags"
---
<div class="padding-top-40 padding-bottom-80">
<table class="post-list table table-condensed">
{% for tag in site.tags %}
{% assign t = tag | first %}
{% assign posts = tag | last %}
{% for post in posts %}
{% if post.tags contains t %}
<tr class="post">
{% ifchanged t %}
<a name="{{ t }}">
<td class="no-border">
<h2 class="padding-top-20"><i class="fa fa-tag fa-flip-horizontal"></i> {{ t }}</h2>
</td>
<td class="no-border"></td>
<td class="no-border"></td>
</tr>
<tr class="post no-border">
{% endifchanged %}
<td><a href="{{ site.base_url }}{{ post.url | replace_first: '/', '' }}" class="stealth-href">{{ post.title }}</a></td>
<td>
<span class="tags">
{% for tag in post.tags %}
<a href="#{{ tag }}" class="stealth-href"><i class="fa fa-tag fa-flip-horizontal"></i> {{ tag }}</a>
{% endfor %}
</span>
</td>
<td class="text-right"><a href="{{ site.base_url }}blog/all/#{{ post.date | date: "%Y" }}" class="stealth-href">{{ post.date | date: "%-d %b %Y" }}</a></td>
</tr>
{% endif %}
{% endfor %}
{% endfor %}
</table>
</div>

15
community-hub/index.html Normal file
View file

@ -0,0 +1,15 @@
---
layout: page_markdown
title: community-hub
heading: The Community Hub
exclude_community_snippet: true
---
<div class="community-hub">
{% for pitch in site.data.community_hub.communities %}
<a href="{{ pitch.url }}"{% if pitch.pending %}{% else %} target="_blank"{% endif %}>
{% comment %}0 = even (right text), 1 = odd (left text){% endcomment %}
{% assign modulo = forloop.index | modulo: 2 %}
{% include pitch.html %}
<a>
{% endfor %}
</div>

18
download/index.html Normal file
View file

@ -0,0 +1,18 @@
---
layout: page_markdown
title: Download
heading: Download
subheading: |
Development is still in progress.<br>
Expect the first beta release of Portmaster in August '18.
community_snippet_intro: Want to be part of Beta?
---
<div class="row text-center ">
<p class="lead">
<a href="https://safing.us13.list-manage.com/subscribe?u=d8e68cb729409a59d97df4790&id=d57e88b8a3">
<i class="far fa-envelope-open primary-color"></i>&nbsp;Subscribe to our newsletter
</a>
to be the first one to know!
</p>
</div>

30
feed.xml Normal file
View file

@ -0,0 +1,30 @@
---
layout: null
---
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>{{ site.title | xml_escape }}</title>
<description>{{ site.description | xml_escape }}</description>
<link>{{ site.url }}{{ site.base_url }}</link>
<atom:link href="{{ site.url }}{{ site.base_url }}feed.xml" rel="self" type="application/rss+xml"/>
<pubDate>{{ site.time | date_to_rfc822 }}</pubDate>
<lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate>
<generator>Jekyll v{{ jekyll.version }}</generator>
{% for post in site.posts limit:10 %}
<item>
<title>{{ post.title | xml_escape }}</title>
<description>{{ post.content | xml_escape }}</description>
<pubDate>{{ post.date | date_to_rfc822 }}</pubDate>
<link>{{ site.url }}{{ site.base_url }}{{ post.url | replace_first: '/', '' }}</link>
<guid isPermaLink="true">{{ site.url }}{{ site.base_url }}{{ post.url | replace_first: '/', '' }}</guid>
{% for tag in post.tags %}
<category>{{ tag | xml_escape }}</category>
{% endfor %}
{% for cat in post.categories %}
<category>{{ cat | xml_escape }}</category>
{% endfor %}
</item>
{% endfor %}
</channel>
</rss>

44
funding/index.md Normal file
View file

@ -0,0 +1,44 @@
---
layout: page_markdown
title: funding
heading: Funding
community_snippet_intro: Want to know the details?
---
We believe that transparency is an incomparably important aspect of running a privacy centered company. That is why we openly share where our funding comes from:
<div class="progress margin-bottom-40">
<div class="progress-bar progress-bar-success" style="width: 21%">
47.799€ Netidee funding
</div>
<div class="progress-bar progress-bar-primary" style="width: 79%">
221.000€ Founder Investments (in Value)
</div>
</div>
### Netidee funding <span class="small">2017</span>
This funding by [Netidee](https://www.netidee.at/) kickstarted the implementation of Safing (we've been working on first prototypes and the concept for some years).
### Founder Investments <span class="small">2018-2019</span>
As this investment is primarily done as work effort, the value shown is an estimation of what we would have earned working our normal job.
Early in 2018 all 3 Founders committed to invest two full years into the Project, while fully financing themselves through:
- personal savings and family support
- 20.000€ from [Fund of Excellence](https://www.fundofexcellence.com/erste-vision-capital/en/)
- Austrian founder program
{% comment %}
Calculation:
Netidee: 47799€
Personal Investments:
- Equity: 5000€
- 2 Years per Founder: 3000€ * 24 * 3 = 216000
financed by:
- personal savings
- Fund of Excellence (20.000€)
- Austrian founder program
{% endcomment %}

40
index.html Normal file
View file

@ -0,0 +1,40 @@
---
title: Safing
---
<!DOCTYPE html>
<html lang={{ site.lang }}>
<head>
{% include head.html %}
<!-- Plugin CSS -->
<link rel="stylesheet" href="{{ site.vendor_url }}css/animate.min.css" type="text/css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body id="page-top">
{% include header.html %}
{% include index/cover.html %}
{% include index/statements.html %}
{% include page_divider.html %}
{% include index/features.html %}
{% include community_snippet.html %}
{% include footer.html %}
</body>
<foot>
<!-- load JS after everything else -->
{% include foot.html %}
<!-- requirements for creative.js -->
<script src="{{ site.vendor_url }}js/jquery.easing.min.js"></script>
<script src="{{ site.vendor_url }}js/jquery.fittext.js"></script>
<script src="{{ site.vendor_url }}js/wow.min.js"></script>
<script src="{{ site.vendor_url }}js/creative.js"></script>
</foot>
</html>

46
our-values/index.md Normal file
View file

@ -0,0 +1,46 @@
---
layout: page_markdown
title: our-values
heading: Our Values
community_snippet_intro: 'Share our values? Wanna help us shape the future?'
---
## Privacy First
The [Charter of Fundamental Rights of the European Union](https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:12012P/TXT&from=EN) clearly states in Article 8:
<blockquote>
Everyone has the right to the protection of personal data concerning him or her.
</blockquote>
We believe that this has become increasingly difficult in an age where private data is being harvested in masses as described by Shoshana Zuboff with the term [surveillance capitalism](https://en.wikipedia.org/wiki/Surveillance_capitalism).
<blockquote>
<p class="text-light">Surveillance capitalism in short is the growth and income focus of capitalism paired with the information gathered from huge amounts of personal data. This combination results in more and better tracking of user behavior to exploit them financially.</p>
</blockquote>
Our mission at Safing is to make sure everyone can protect their digital selves without making compromises in usability or privacy. We give users back control over their data.
## Open Source
To ensure maximum privacy for our users and to build trust we need to be transparent in every aspect. That's why we [publish all of our hard work](({{ site.communities.github.url }})) as open source. This way you can have a look at our source code and inspect if we truly stay to our word.
## Ethical Funding
Taking money always means opening up to influences. That is why we see it as our responsibility to be thoughtful about taking investments. We do not want parties to gain influence which do not or might not stand behind our values. That is why in our current funding phase we took more personal risks instead of selling parts of our company for easy money.
#### Transparent Funding Policy
For us, ethical funding also means we want to make sure that our users know who paid for the programs and services they use.
As a result we have adopted a transparent funding policy to openly share [how we are funded](/funding). All our funding (and partnerships) will remain public!
#### Clear Business Model
Instead of pushing a free product and worry about the business model later (*cough* - *selling user data* - *cough*) we want to have that part figured out right from the start. So this is how we'll do it:
- Portmaster is and always will be free. 'Put you back in control of your data' is our core vision, which is why we concluded to release Portmaster for free.
- Port17 will be a subscription based service. Of course we need to cover our costs and pay our bills. But more importantly we want to have the funds to further engage in our mission and to extend our services. That is why we decided on the subscription model - instead of building just on donations - which we feel would be infeasible.
If you want to support us, use Port17! And if you want to go further, get involved in our community!

43
roadmap/index.html Normal file
View file

@ -0,0 +1,43 @@
---
layout: page
title: roadmap
heading: Roadmap
subheading: "What we've done and plan to do."
---
<span id="roadmap">
<div class="container">
<div class="row">
<div class="col-lg-12">
<ul class="timeline">
{% for element in site.data.roadmap.elements %}
{% assign modulo = forloop.index | modulo: 2 %}{% comment %}0 = even, 1 = odd{% endcomment %}
<li{% if modulo == 0 %} class="timeline-inverted"{% endif %}>
<div class="timeline-icon">
<i class="fa fa-{{ element.icon }} text-primary"></i>
</div>
<div class="timeline-panel">
<div class="timeline-heading">
<h4>{{ element.time }}</h4>
<h4 class="color-primary-important">{{ element.heading }}</h4>
</div>
<div class="timeline-body">
<p class="text-muted">{{ element.body }}</p>
{% if element.funding_status %}
{% assign config = site.data.roadmap.config.funding[element.funding_status] %}
<p class="text-{{ config.color_class }}">{{ config.text }}</p>
{% endif %}
</div>
</div>
</li>
{% endfor %}
<li class="timeline-inverted">
<div class="timeline-icon">
<i class="fa fa-ellipsis-h text-primary"></i>
</div>
</li>
</ul>
</div>
</div>
</div>
</span>

63
technology/index.md Normal file
View file

@ -0,0 +1,63 @@
---
layout: page_markdown
title: Technology
# heading: The Tech That Powers Safing
# subheading: How Safing works.
---
Here is short and very technical overview of the three components that make Safing awesome.
## Portmaster
Portmaster is an application firewall that enforces application profiles on processes.
Being an application firewall means tightly integrating with the kernel of the underlying OS <span class="text-lighter">(via network filter APIs or kernel modules)</span> to gain needed information <span class="text-lighter">(associate network packets to processes)</span> and control <span class="text-lighter">(block or deny network connections)</span>.
Application profiles describe an application's behavior in the sense of how it interacts with the Internet: Does it connect to a fixed set of domains? Is it a peer to peer application? Does it interact with the local network? Should TLS be enforced and checked? etc.
Profiles represent an application as experienced by the user, not as defined by technology - making them easy to understand and superior to other common application classification approaches.
They can be either created by users themselves or - most of the times - obtained through Stamp <span class="text-lighter">(explained later)</span>.
## Port17
Port17 brings together several state of the art network technologies and gives them a new spicy twist 🌶️.
The goal of Port17 is to protect connection data as well as metadata from [surveillance capitalism](https://en.wikipedia.org/wiki/Surveillance_capitalism).
Adapted core concepts:
- To protect your privacy, we use newest proven encryption technology: a __double ratchet__ [^doubleratchet] based protocol to provide perfect forward and backward secrecy which can change used algorithms on demand through configuration.
- The __onion-encrypted multi-hop architecture__ [^onionrouting] protects your identity and makes you anonymous online.
- __Zero roundtrip__ connection establishment enable blazing fast connections.
- __Paid community nodes__ are highly welcome to build a huge, capable and trustless network.
The new spicy twist 🌶️:
- To protect network data and metadata as long as possible, Port17 selects exit nodes [^exitnode] in proximity to the destination server.
- Routes are calculated for maximum speed by default and use a minimum of 3 nodes. This behavior changes based on the active security level, providing slower, but tougher routes with more nodes.
- Exit node [^exitnode] selection can be influenced up to application/domain pairs.
- Unencrypted connections are only handled by trusted nodes run by Safing. In this sense we act as a trusted anchor until all the web is encrypted. There is no room for MITM-ing [^mitm] nodes.
- As soon as the network has a good share of community nodes, routing will diversify routes by node ownership to further reduce needed trust on single parties <span class="text-lighter">(us)</span>.
- Tunnels are layer 5 [^osi] and up to reduce unnecessary metadata and improve speed <span class="text-lighter">(similar to SOCKS proxies)</span>.
- Clients always know about the full network. <span class="text-lighter">(will require improved method for better scaling at some point)</span>
- Authentication is decoupled from network nodes - they only know that someone is allowed to use the network, but not who.
- Payment via cryptocurrencies allows unblockable payment access.
- Tight integration with Portmaster ensures that no data will ever leak should a tunnel break. <span class="text-lighter">(unlike VPNs)</span>
[^doubleratchet]: [Double Ratchet Algorithm](https://en.wikipedia.org/wiki/Double_Ratchet_Algorithm)
[^onionrouting]: [Onion routing](https://en.wikipedia.org/wiki/Onion_routing)
[^exitnode]: final network node from which the connection is made to the destination server
[^mitm]: [Man-in-the-Middle Attack](https://en.wikipedia.org/wiki/Man-in-the-middle_attack)
[^osi]: [OSI network model](https://en.wikipedia.org/wiki/OSI_model)
<span class="note-light"> A final note: You may have noted that Port17 is, in some aspects, similar to the [Tor Project](https://www.torproject.org/). The key difference is, that Port17 focuses on speed and usability, but does not claim to match Tor's level of security. We will provide a in-depth comparison in the future.</span>
## Stamp
Stamp is an online community where participants _"stamp"_ <span class="text-lighter">(ie. tag, categorize)</span> domains and applications <span class="text-lighter">(used by Portmaster for application profiles)</span> to serve as a data source for any kind of network filter. Contributions are rewarded with reputation that gives them more influence on the platform. This reputation system will be blockchain-based in the future. Stamp is a separate project that is backed by Safing.
## Further Reading
- Find the full docs: <span class="note-light">coming soon</span>
- Find our source code [on Github](https://github.com/Safing).
<div class="margin-top-40 page-divider"></div>

15
terms/index.html Normal file
View file

@ -0,0 +1,15 @@
---
layout: page
title: Terms
heading: Terms
subheading: Contact us, we'd like to hear from you!
exclude_community_snippet: true
---
<div class="text-center contact-text">
You can reach us at <span class="contact-email">@</span>.<br>
<i class="fa fa-lg fa-map-marker" aria-hidden="true"></i>&nbsp;&nbsp;&nbsp;We are located in Austria.<br>The Safing ICS Technologies GmbH is the legal entity behind Safing and was founded in 2017
</div>
<div class="contact-image">
<img src="{{ site.assets_url }}img/contact_img.jpg">
</div>

6
vendor/css/animate.min.css vendored Normal file

File diff suppressed because one or more lines are too long

6800
vendor/css/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load diff

5
vendor/css/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show more