Compare commits
No commits in common. "e147e06ff2c884785726a50e2a0f58ec612bea97" and "3a03290f8f3d3db674d80e6b463cb019cd51adb9" have entirely different histories.
e147e06ff2
...
3a03290f8f
44
.drone.yml
|
@ -1,6 +1,5 @@
|
|||
kind: pipeline
|
||||
type: docker
|
||||
name: build-develop
|
||||
name: default
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
|
@ -8,6 +7,7 @@ steps:
|
|||
commands:
|
||||
- npm install
|
||||
- npm run build
|
||||
|
||||
- name: deploy
|
||||
image: alpine
|
||||
environment:
|
||||
|
@ -19,42 +19,4 @@ steps:
|
|||
from_secret: FTP_PASSWORD
|
||||
commands:
|
||||
- which lftp || ( apk --update add lftp )
|
||||
- lftp -e "set ftp:ssl-force true; set ssl:verify-certificate no; mirror -R ./dist/ dev.sp-codes.de/; bye" -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- develop
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: build-master
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: node
|
||||
commands:
|
||||
- npm install
|
||||
- npm run build
|
||||
- name: deploy
|
||||
image: alpine
|
||||
environment:
|
||||
FTP_HOST:
|
||||
from_secret: FTP_HOST
|
||||
FTP_USERNAME:
|
||||
from_secret: FTP_USERNAME
|
||||
FTP_PASSWORD:
|
||||
from_secret: FTP_PASSWORD
|
||||
commands:
|
||||
- which lftp || ( apk --update add lftp )
|
||||
- lftp -e "set ftp:ssl-force true; set ssl:verify-certificate no; mirror -R ./dist/ sp-codes.de/; bye" -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
- lftp -e "mirror -R ./dist/ sp-codes.de/; bye" -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST
|
||||
|
|
23
.eleventy.js
|
@ -1,23 +0,0 @@
|
|||
const eleventyNavigationPlugin = require("@11ty/eleventy-navigation");
|
||||
|
||||
module.exports = function(eleventyConfig) {
|
||||
eleventyConfig.addWatchTarget("./scss/");
|
||||
|
||||
eleventyConfig.addPlugin(eleventyNavigationPlugin);
|
||||
eleventyConfig.setUseGitIgnore(false);
|
||||
eleventyConfig.addPassthroughCopy({
|
||||
"img": "img",
|
||||
"font": "font",
|
||||
"node_modules/@fortawesome/fontawesome-free/webfonts/": "font",
|
||||
"node_modules/flag-icon-css/flags/4x3/(de|us)*": "flags"
|
||||
});
|
||||
|
||||
return {
|
||||
dir: {
|
||||
input: "sites",
|
||||
includes: "_includes",
|
||||
layouts: "_includes/layouts",
|
||||
output: "dist"
|
||||
}
|
||||
};
|
||||
};
|
|
@ -1,7 +1,5 @@
|
|||
# sp-codes.de
|
||||
|
||||
[![Build Status](https://ci.sp-codes.de/api/badges/samuel-p/sp-codes.de/status.svg)](https://ci.sp-codes.de/samuel-p/sp-codes.de)
|
||||
|
||||
Website for sp-codes.de
|
||||
|
||||
[GitHub](https://github.com/samuel-p/sp-codes.de)
|
||||
|
|
254
gulpfile.js
Normal file
|
@ -0,0 +1,254 @@
|
|||
/**
|
||||
* Settings
|
||||
* Turn on/off build features
|
||||
*/
|
||||
var settings = {
|
||||
clean: true,
|
||||
scripts: true,
|
||||
styles: true,
|
||||
copy: true,
|
||||
reload: true
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Paths to project folders
|
||||
*/
|
||||
var paths = {
|
||||
input: 'src/',
|
||||
output: 'dist/',
|
||||
scripts: {
|
||||
input: 'src/js/*.js',
|
||||
output: 'dist/js/'
|
||||
},
|
||||
styles: {
|
||||
input: 'src/scss/*.scss',
|
||||
output: 'dist/css/'
|
||||
},
|
||||
copy: {
|
||||
input: [
|
||||
'src/*.html',
|
||||
// 'src/.htaccess',
|
||||
'src/{img,font}/**/*',
|
||||
'node_modules/@fortawesome/fontawesome-free/*fonts/**/*'
|
||||
],
|
||||
output: 'dist/'
|
||||
},
|
||||
reload: './dist/'
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Template for banner to add to file headers
|
||||
*/
|
||||
|
||||
var banner = {
|
||||
main:
|
||||
'/*!' +
|
||||
' <%= package.name %> v<%= package.version %>' +
|
||||
' | (c) ' + new Date().getFullYear() + ' <%= package.author.name %>' +
|
||||
' | <%= package.license %> License' +
|
||||
' | <%= package.repository.url %>' +
|
||||
' */\n'
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Gulp Packages
|
||||
*/
|
||||
// General
|
||||
var {src, dest, watch, series, parallel} = require('gulp');
|
||||
var del = require('del');
|
||||
var flatmap = require('gulp-flatmap');
|
||||
var lazypipe = require('lazypipe');
|
||||
var rename = require('gulp-rename');
|
||||
var header = require('gulp-header');
|
||||
var package = require('./package.json');
|
||||
|
||||
// Scripts
|
||||
var concat = require('gulp-concat');
|
||||
var uglify = require('gulp-terser');
|
||||
var optimizejs = require('gulp-optimize-js');
|
||||
|
||||
// Styles
|
||||
var sass = require('gulp-sass');
|
||||
var postcss = require('gulp-postcss');
|
||||
var prefix = require('autoprefixer');
|
||||
var minify = require('cssnano');
|
||||
var tildeImporter = require('node-sass-tilde-importer');
|
||||
|
||||
// BrowserSync
|
||||
var browserSync = require('browser-sync');
|
||||
|
||||
|
||||
/**
|
||||
* Gulp Tasks
|
||||
*/
|
||||
// Remove pre-existing content from output folders
|
||||
var cleanDist = function (done) {
|
||||
|
||||
// Make sure this feature is activated before running
|
||||
if (!settings.clean) return done();
|
||||
|
||||
// Clean the dist folder
|
||||
del.sync([
|
||||
paths.output
|
||||
]);
|
||||
|
||||
// Signal completion
|
||||
return done();
|
||||
|
||||
};
|
||||
|
||||
// Repeated JavaScript tasks
|
||||
var jsTasks = lazypipe()
|
||||
.pipe(header, banner.main, {package: package})
|
||||
.pipe(optimizejs)
|
||||
.pipe(dest, paths.scripts.output)
|
||||
.pipe(rename, {suffix: '.min'})
|
||||
.pipe(uglify)
|
||||
.pipe(optimizejs)
|
||||
.pipe(header, banner.main, {package: package})
|
||||
.pipe(dest, paths.scripts.output);
|
||||
|
||||
// minify, and concatenate scripts
|
||||
var buildScripts = function (done) {
|
||||
// Make sure this feature is activated before running
|
||||
if (!settings.scripts) return done();
|
||||
|
||||
// Run tasks on script files
|
||||
return src(paths.scripts.input)
|
||||
.pipe(flatmap(function(stream, file) {
|
||||
|
||||
// If the file is a directory
|
||||
if (file.isDirectory()) {
|
||||
|
||||
// Setup a suffix variable
|
||||
var suffix = '';
|
||||
|
||||
// If separate polyfill files enabled
|
||||
if (settings.polyfills) {
|
||||
|
||||
// Update the suffix
|
||||
suffix = '.polyfills';
|
||||
|
||||
// Grab files that aren't polyfills, concatenate them, and process them
|
||||
src([file.path + '/*.js', '!' + file.path + '/*' + paths.scripts.polyfills])
|
||||
.pipe(concat(file.relative + '.js'))
|
||||
.pipe(jsTasks());
|
||||
|
||||
}
|
||||
|
||||
// Grab all files and concatenate them
|
||||
// If separate polyfills enabled, this will have .polyfills in the filename
|
||||
src(file.path + '/*.js')
|
||||
.pipe(concat(file.relative + suffix + '.js'))
|
||||
.pipe(jsTasks());
|
||||
|
||||
return stream;
|
||||
|
||||
}
|
||||
|
||||
// Otherwise, process the file
|
||||
return stream.pipe(jsTasks());
|
||||
|
||||
}));
|
||||
|
||||
};
|
||||
|
||||
// Process, and minify Sass files
|
||||
var buildStyles = function (done) {
|
||||
// Make sure this feature is activated before running
|
||||
if (!settings.styles) return done();
|
||||
|
||||
// Run tasks on all Sass files
|
||||
return src(paths.styles.input)
|
||||
.pipe(sass({
|
||||
importer: tildeImporter,
|
||||
outputStyle: 'expanded',
|
||||
sourceComments: true
|
||||
}))
|
||||
.pipe(postcss([
|
||||
prefix({
|
||||
cascade: true,
|
||||
remove: true
|
||||
})
|
||||
]))
|
||||
.pipe(header(banner.main, {package: package}))
|
||||
.pipe(dest(paths.styles.output))
|
||||
.pipe(rename({suffix: '.min'}))
|
||||
.pipe(postcss([
|
||||
minify({
|
||||
discardComments: {
|
||||
removeAll: true
|
||||
}
|
||||
})
|
||||
]))
|
||||
.pipe(dest(paths.styles.output));
|
||||
|
||||
};
|
||||
|
||||
// Copy static files into output folder
|
||||
var copyFiles = function (done) {
|
||||
|
||||
// Make sure this feature is activated before running
|
||||
if (!settings.copy) return done();
|
||||
|
||||
// Copy static files
|
||||
return src(paths.copy.input)
|
||||
.pipe(dest(paths.copy.output));
|
||||
|
||||
};
|
||||
|
||||
// Watch for changes to the src directory
|
||||
var startServer = function (done) {
|
||||
// Make sure this feature is activated before running
|
||||
if (!settings.reload) return done();
|
||||
|
||||
// Initialize BrowserSync
|
||||
browserSync.init({
|
||||
server: {
|
||||
baseDir: paths.reload
|
||||
}
|
||||
});
|
||||
|
||||
// Signal completion
|
||||
done();
|
||||
|
||||
};
|
||||
|
||||
// Reload the browser when files change
|
||||
var reloadBrowser = function (done) {
|
||||
if (!settings.reload) return done();
|
||||
browserSync.reload();
|
||||
done();
|
||||
};
|
||||
|
||||
// Watch for changes
|
||||
var watchSource = function (done) {
|
||||
watch(paths.input, series(exports.default, reloadBrowser));
|
||||
done();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Export Tasks
|
||||
*/
|
||||
// Default task
|
||||
// gulp
|
||||
exports.default = series(
|
||||
cleanDist,
|
||||
parallel(
|
||||
buildScripts,
|
||||
buildStyles,
|
||||
copyFiles
|
||||
)
|
||||
);
|
||||
|
||||
// Watch and reload
|
||||
// gulp watch
|
||||
exports.watch = series(
|
||||
exports.default,
|
||||
startServer,
|
||||
watchSource
|
||||
);
|
BIN
img/matrix.png
Before Width: | Height: | Size: 4.3 KiB |
6151
package-lock.json
generated
38
package.json
|
@ -3,32 +3,34 @@
|
|||
"version": "1.0.0",
|
||||
"description": "website for sp-codes.de",
|
||||
"scripts": {
|
||||
"compile-sass": "node-sass --output-style compressed --importer=node_modules/node-sass-tilde-importer scss/main.scss dist/css/main.css",
|
||||
"watch:eleventy": "eleventy --serve",
|
||||
"watch:sass": "npm run compile-sass -- --watch",
|
||||
"start": "npm-run-all compile-sass --parallel watch:*",
|
||||
"build": "npm run compile-sass && eleventy && npm run move-index",
|
||||
"move-index": "cpx dist/de/index.html dist/"
|
||||
"start": "gulp watch",
|
||||
"build": "gulp"
|
||||
},
|
||||
"author": "samuel-p",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://git.sp-codes.de/samuel-p/sp-codes.de"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"browser-sync": "2.26.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@11ty/eleventy": "^0.11.0",
|
||||
"@11ty/eleventy-navigation": "^0.1.5",
|
||||
"cpx": "^1.5.0",
|
||||
"node-sass": "^4.14.1",
|
||||
"node-sass-tilde-importer": "^1.0.2",
|
||||
"npm-run-all": "^4.1.5"
|
||||
"gulp": "4.0.2",
|
||||
"del": "3.0.0",
|
||||
"lazypipe": "1.0.1",
|
||||
"gulp-flatmap": "1.0.2",
|
||||
"gulp-header": "2.0.5",
|
||||
"gulp-rename": "1.4.0",
|
||||
"gulp-concat": "2.6.1",
|
||||
"gulp-terser": "1.1.7",
|
||||
"gulp-optimize-js": "1.1.0",
|
||||
"gulp-sass": "4.0.2",
|
||||
"gulp-postcss": "8.0.0",
|
||||
"cssnano": "4.1.10",
|
||||
"autoprefixer": "9.6.1",
|
||||
"browser-sync": "2.26.7",
|
||||
"node-sass-tilde-importer": "^1.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "^5.13.1",
|
||||
"bootstrap": "^4.5.0",
|
||||
"flag-icon-css": "^3.5.0"
|
||||
"@fortawesome/fontawesome-free": "^5.11.2",
|
||||
"bootstrap": "^4.3.1",
|
||||
"jquery": "^3.4.1"
|
||||
}
|
||||
}
|
||||
|
|
190
scss/main.scss
|
@ -1,190 +0,0 @@
|
|||
@import "~bootstrap/scss/bootstrap-grid";
|
||||
@import "~bootstrap/scss/bootstrap-reboot";
|
||||
@import "~bootstrap/scss/utilities/align";
|
||||
@import "~bootstrap/scss/utilities/spacing";
|
||||
@import "~bootstrap/scss/utilities/display";
|
||||
@import "~bootstrap/scss/utilities/text";
|
||||
@import "~bootstrap/scss/utilities/float";
|
||||
|
||||
$fa-font-path: "../font";
|
||||
@import "~@fortawesome/fontawesome-free/scss/fontawesome";
|
||||
@import "~@fortawesome/fontawesome-free/scss/solid";
|
||||
@import "~@fortawesome/fontawesome-free/scss/brands";
|
||||
@import "~@fortawesome/fontawesome-free/scss/regular";
|
||||
$flag-icon-rect-path: '';
|
||||
@import "~flag-icon-css/sass/flag-icon";
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
body {
|
||||
background-image: url("../img/bg.png");
|
||||
color: #fff;
|
||||
min-height: 100vh;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
.content {
|
||||
flex: 1;
|
||||
padding: 2%;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
color: #fea500;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #fea500;
|
||||
|
||||
&:hover {
|
||||
color: darken(#fea500, .5);
|
||||
}
|
||||
}
|
||||
|
||||
.logo {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
max-width: 256px;
|
||||
max-height: 256px;
|
||||
background-color: #ffffff;
|
||||
border-radius: 50%;
|
||||
border: 2px solid #000000;
|
||||
}
|
||||
|
||||
.menu {
|
||||
a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.active a {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.menu-top {
|
||||
border-bottom: 1px solid #ffffff;
|
||||
}
|
||||
|
||||
.menu-bottom {
|
||||
border-top: 1px solid #ffffff;
|
||||
}
|
||||
|
||||
.border-top-bottom {
|
||||
border-top: 1px solid #ffffff;
|
||||
border-bottom: 1px solid #ffffff;
|
||||
}
|
||||
|
||||
.border-top {
|
||||
border-top: 1px solid #ffffff;
|
||||
}
|
||||
|
||||
.border-bottom {
|
||||
border-bottom: 1px solid #ffffff;
|
||||
}
|
||||
|
||||
.heading {
|
||||
text-align: center;
|
||||
|
||||
a {
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
.flex-grow {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.sp-codes {
|
||||
font-size: 3rem;
|
||||
}
|
||||
.logo {
|
||||
max-width: 128px;
|
||||
max-height: 128px;
|
||||
}
|
||||
.fa-4x {
|
||||
font-size: 2em;
|
||||
}
|
||||
}
|
||||
|
||||
.service {
|
||||
background-color: #222;
|
||||
border: 1px solid #fff;
|
||||
height: 100%;
|
||||
|
||||
.link {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.inner {
|
||||
position: relative;
|
||||
pointer-events: none;
|
||||
z-index: 1;
|
||||
padding: 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
height: 100%;
|
||||
|
||||
a {
|
||||
pointer-events: all;
|
||||
}
|
||||
}
|
||||
|
||||
&.flat {
|
||||
.inner {
|
||||
flex-direction: row;
|
||||
pointer-events: all;
|
||||
text-decoration: none;
|
||||
|
||||
h2 {
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contact-links a {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
.matrix-icon {
|
||||
margin: 0 8px;
|
||||
width: 4em;
|
||||
height: 4em;
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.matrix-icon {
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
}
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: #fea500;
|
||||
color: #000000;
|
||||
padding: 1px 3px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: #fea500;
|
||||
color: #000000;
|
||||
padding: 1px 3px;
|
||||
border-radius: 4px;
|
||||
|
||||
code {
|
||||
background-color: initial;
|
||||
padding: initial;
|
||||
border-radius: initial;
|
||||
}
|
||||
}
|
|
@ -1,60 +0,0 @@
|
|||
[
|
||||
{
|
||||
"id": "searx",
|
||||
"name": "Searx",
|
||||
"icon": "fas fa-search",
|
||||
"url": "https://searx.sp-codes.de",
|
||||
"summary": {
|
||||
"de": "Eine privatsphären-respektierende, hackbare Metasuchmaschine.",
|
||||
"en": "A privacy-respecting, hackable metasearch engine."
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "invidious",
|
||||
"name": "Invidious",
|
||||
"icon": "fab fa-youtube",
|
||||
"url": "https://invidious.sp-codes.de",
|
||||
"summary": {
|
||||
"de": "Ein alternatives YouTube-Frontend.",
|
||||
"en": "An alternative YouTube-Frontend."
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "connectivitycheck",
|
||||
"name": "Captive Portal Check",
|
||||
"icon": "fas fa-wifi",
|
||||
"summary": {
|
||||
"de": "Eine datenschutzfreundliches Tool, um Anmeldeseiten in WLAN-Netzwerken zu erkennen.",
|
||||
"en": "A privacy friendly Service to detect captive portals in WIFI networks."
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "matrix",
|
||||
"name": "Matrix",
|
||||
"icon": "fas fa-comments",
|
||||
"url": "https://chat.sp-codes.de",
|
||||
"summary": {
|
||||
"de": "Ein offenes Netzwerk für sichere, dezentralisierte Kommunikation.",
|
||||
"en": "An open network for secure, decentralized communication."
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "gitea",
|
||||
"name": "Gitea",
|
||||
"icon": "fas fa-code",
|
||||
"url": "https://git.sp-codes.de",
|
||||
"summary": {
|
||||
"de": "Eine leichtgewichtige Code-Hosting-Plattform für git.",
|
||||
"en": "A lightweight code hosting platform for git."
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "firefox-sync",
|
||||
"name": "Firefox Sync",
|
||||
"icon": "fab fa-firefox",
|
||||
"summary": {
|
||||
"de": "Ein Service um Firefox Einstellungen, Lesezeichen, offene Tabs und vieles mehr über verschiedene Geräte zu synchronisieren.",
|
||||
"en": "A service to sync Firefox settings, bookmarks, open tabs and much more between multiple devices."
|
||||
}
|
||||
}
|
||||
]
|
|
@ -1,21 +0,0 @@
|
|||
module.exports = {
|
||||
title: "sp-codes",
|
||||
description: "Samuel Philipp - Software Engineer from Magdeburg",
|
||||
url: "https://sp-codes.de",
|
||||
baseUrl: "/",
|
||||
author: "Samuel Philipp",
|
||||
buildTime: new Date(),
|
||||
languages: [
|
||||
{
|
||||
label: "English",
|
||||
code: "en",
|
||||
icon: "us"
|
||||
},
|
||||
{
|
||||
label: "Deutsch",
|
||||
code: "de",
|
||||
icon: "de"
|
||||
}
|
||||
]
|
||||
};
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"imprint": {
|
||||
"de": "Impressum",
|
||||
"en": "Imprint"
|
||||
},
|
||||
"privacy": {
|
||||
"de": "Datenschutz",
|
||||
"en": "Privacy"
|
||||
}
|
||||
}
|
|
@ -1,82 +0,0 @@
|
|||
---
|
||||
title: sp-codes
|
||||
---
|
||||
<!doctype html>
|
||||
<html lang="{{ locale }}" prefix="og: http://ogp.me/ns#">
|
||||
<head>
|
||||
<title>sp-codes - {{ title }}</title>
|
||||
<base href="/">
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="fragment" content="!">
|
||||
<meta name="target" content="all">
|
||||
<meta name="audience" content="all">
|
||||
<meta name="coverage" content="Worldwide">
|
||||
<meta name="distribution" content="Global">
|
||||
<meta name="rating" content="general">
|
||||
<meta name="url" content="https://sp-codes.de/">
|
||||
<meta name="subject" content="sp-codes">
|
||||
<meta name="description" content="Samuel Philipp - Software Engineer from Magdeburg">
|
||||
<meta name="author" content="Samuel Philipp">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:locale" content="de">
|
||||
<meta property="og:url" content="https://sp-codes.de/">
|
||||
<meta property="og:title" content="sp-codes">
|
||||
<meta property="og:description" content="Samuel Philipp - Software Engineer from Magdeburg">
|
||||
<meta property="og:site_name" content="sp-codes">
|
||||
<meta property="og:image" content="https://sp-codes.de/img/sp-codes.jpg">
|
||||
<!--<meta property="og:updated_time" content="">-->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="sp-codes">
|
||||
<meta name="twitter:description" content="Samuel Philipp - Software Engineer from Magdeburg">
|
||||
<meta name="twitter:image" content="https://sp-codes.de/img/sp-codes.jpg">
|
||||
<link rel="shortcut icon" href="img/samuel.png">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="d-flex justify-content-start flex-wrap p-2 menu menu-top">
|
||||
{%- for entry in collections.all | eleventyNavigation %}
|
||||
{% if entry.url.includes(locale) %}
|
||||
<div{% if entry.url == page.url %} class="active"{% endif %}>
|
||||
<a href="{{ entry.url | url }}" class="mr-2">
|
||||
{% if entry.icon %}<span class="fas fa-{{ entry.icon }} mr-2"></span>{% endif %}{{ entry.title }}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{%- endfor %}
|
||||
<div class="flex-grow-1"></div>
|
||||
{% for language in site.languages %}
|
||||
{% set translatedUrl = "/" + language.code + "/" %}
|
||||
{% for item in collections.all %}
|
||||
{% if item.data.key == key and item.data.locale == language.code and not item.data.hidden %}
|
||||
{% set translatedUrl = item.url %}
|
||||
{% endif %}
|
||||
{% endfor%}
|
||||
<div {% if language.code == locale %} class="active"{% endif %}>
|
||||
<a href="{{ translatedUrl | url }}" class="ml-3">
|
||||
<span class="flag-icon flag-icon-{{ language.icon }}" title="{{ language.label }}"></span>
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="container">
|
||||
{{ content | safe }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex justify-content-start flex-wrap p-2 menu menu-bottom">
|
||||
<div class="d-flex justify-content-start flex-wrap">
|
||||
<div class="mr-3">Made with <span class="fas fa-heart highlight"></span> in Germany</div>
|
||||
<div class="mr-3"><span class="far fa-copyright mr-2"></span>Samuel Philipp</div>
|
||||
</div>
|
||||
<div class="flex-sm-grow-1"></div>
|
||||
<div class="d-flex justify-content-sm-start flex-wrap">
|
||||
<div class="mr-3"><a href="/{{locale}}/imprint"><span class="fas fa-info-circle mr-2"></span>{{strings.imprint[locale]}}</a></div>
|
||||
<div class="mr-3"><a href="/{{locale}}/privacy"><span class="fas fa-user-secret mr-2"></span>{{strings.privacy[locale]}}</a></div>
|
||||
<div><a target="_blank" href="https://git.sp-codes.de/samuel-p/sp-codes.de"><span class="fas fa-code mr-2"></span>Code</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
---
|
||||
<div class="row py-5">
|
||||
<div class="col">
|
||||
<img class="logo" src="/img/samuel.png">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ content | safe }}
|
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
---
|
||||
<a class="float-right mt-3" href="https://status.sp-codes.de" target="_blank"><i class="fas fa-heartbeat mr-2"></i>Status</a>
|
||||
|
||||
{{ content | safe }}
|
||||
|
||||
<div class="row">
|
||||
{% include 'services-extended.html' %}
|
||||
</div>
|
|
@ -1,22 +0,0 @@
|
|||
<div class="d-flex justify-content-center flex-wrap my-3 contact-links">
|
||||
<div class="m-2"><a href="mailto:mail@sp-codes.de"><span
|
||||
class="fas fa-fw fa-4x fa-envelope"></span></a></div>
|
||||
<div class="m-2"><a href="https://matrix.to/#/@samuel-p:matrix.sp-codes.de">
|
||||
<img class="matrix-icon" src="img/matrix.png" alt=""></a></div>
|
||||
<div class="m-2"><a rel="me" href="https://social.tchncs.de/@samuel_p"><span
|
||||
class="fab fa-fw fa-4x fa-mastodon"></span></a></div>
|
||||
<div class="m-2"><a href="https://stackoverflow.com/users/9662601/samuel-p"><span
|
||||
class="fab fa-fw fa-4x fa-stack-overflow"></span></a></div>
|
||||
<div class="m-2"><a href="https://gitlab.com/samuel-p"><span
|
||||
class="fab fa-fw fa-4x fa-gitlab"></span></a></div>
|
||||
<div class="m-2"><a href="https://github.com/samuel-p"><span
|
||||
class="fab fa-fw fa-4x fa-github"></span></a></div>
|
||||
<div class="m-2"><a href="https://hub.docker.com/u/samuelph"><span
|
||||
class="fab fa-fw fa-4x fa-docker"></span></a></div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-center mb-3">
|
||||
<div class="lead text-center">
|
||||
<a href="https://samuel-philipp.de">samuel-philipp.de</a>
|
||||
</div>
|
||||
</div>
|
|
@ -1,13 +0,0 @@
|
|||
{%- for service in services %}
|
||||
<div class="col-12 col-md-6 col-lg-4 p-3">
|
||||
<div class="service">
|
||||
<a class="link" href="/{{locale}}/services/{{service.id}}"></a>
|
||||
<div class="inner">
|
||||
<i class="{{service.icon}} fa-4x"></i>
|
||||
<h2 class="mt-2">{{service.name}}{% if service.url %} <a href="{{service.url}}" target="_blank"><i
|
||||
class="fas fa-external-link-alt"></i></a>{% endif %}</h2>
|
||||
<div>{{service.summary[locale]}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{%- endfor %}
|
|
@ -1,10 +0,0 @@
|
|||
{%- for service in services %}
|
||||
<div class="col-12 col-md-6 p-3">
|
||||
<div class="service flat">
|
||||
<a class="link inner" href="/{{locale}}/services/{{service.id}}">
|
||||
<i class="{{service.icon}} fa-fw fa-2x"></i>
|
||||
<h2 class="mt-2">{{service.name}}</h2>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{%- endfor %}
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: 404
|
||||
title: Nicht gefunden
|
||||
---
|
||||
# Nicht gefunden
|
||||
|
||||
Diese Seite existiert (noch) nicht. Schau später nochmal vorbei, oder fang von vorne an: [Home](/{{locale}}/)
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"locale": "de"
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
title: Impressum
|
||||
---
|
||||
<h1>Impressum</h1>
|
||||
<div class="mb-3 border-bottom">
|
||||
<h2>Angaben gemäß § 5 TMG:</h2>
|
||||
<p>Samuel Philipp
|
||||
Otto-von-Guericke-Straße 40a<br/>
|
||||
39104 Magdeburg<br/>
|
||||
Deutschland</p>
|
||||
<h2>Kontaktmöglichkeiten</h2>
|
||||
<p><strong>E-Mail-Adresse</strong>: <a href="mailto:info@sp-codes.de" target="_blank">info@sp-codes.de</a></p>
|
||||
<!--<p><strong>Kontaktformular</strong>: <a href="https://sp-codes.de/contact" target="_blank">https://sp-codes.de/contact</a></p>-->
|
||||
</div>
|
||||
<div class="mb-3 border-bottom">
|
||||
<h2>Haftungs- und Urheberrechtshinweise</h2>
|
||||
<p><strong>Haftungsausschluss:</strong> Die Inhalte dieses Onlineangebotes wurden sorgfältig und nach unserem
|
||||
aktuellen Kenntnisstand erstellt, dienen jedoch nur der Information und entfalten keine rechtlich bindende
|
||||
Wirkung, sofern es sich nicht um gesetzlich verpflichtende Informationen (z.B. das Impressum, die
|
||||
Datenschutzerklärung, AGB oder Widerrufsbelehrungen für Verbraucher) handelt. Wir behalten uns vor, die
|
||||
Inhalte
|
||||
vollständig oder teilweise zu ändern oder zu löschen, soweit vertragliche Verpflichtungen unberührt bleiben.
|
||||
Alle Angebote sind freibleibend und unverbindlich. </p>
|
||||
<p><strong>Links auf fremde Webseiten:</strong> Inhalte fremder Webseiten, auf die wir direkt oder indirekt
|
||||
verweisen, liegen außerhalb unseres Verantwortungsbereiches und machen wir uns nicht zu Eigen. Für alle
|
||||
Inhalte
|
||||
und insbesondere für Schäden, die aus der Nutzung der in den verlinkten Webseiten aufrufbaren Informationen
|
||||
entstehen, haftet allein der Anbieter der verlinkten Webseiten.</p>
|
||||
<p><strong>Urheberrechte und Markenrechte:</strong> Alle auf dieser Website dargestellten Inhalte, wie Texte,
|
||||
Fotografien, Grafiken, Marken und Warenzeichen sind durch die jeweiligen Schutzrechte (Urheberrechte,
|
||||
Markenrechte) geschützt. Die Verwendung, Vervielfältigung usw. unterliegen unseren Rechten oder den Rechten
|
||||
der
|
||||
jeweiligen Urheber bzw. Rechteverwalter.</p>
|
||||
<p><strong>Hinweise auf Rechtsverstöße:</strong> Sollten Sie innerhalb unseres Internetauftritts Rechtsverstöße
|
||||
bemerken, bitten wir Sie uns auf diese hinzuweisen. Wir werden rechtswidrige Inhalte und Links nach
|
||||
Kenntnisnahme unverzüglich entfernen.</p>
|
||||
</div>
|
||||
<p><a href="https://datenschutz-generator.de/?l=de"
|
||||
title="Rechtstext von Dr. Schwenke - für weitere Informationen bitte anklicken." target="_blank"
|
||||
rel="noopener noreferrer nofollow">Erstellt mit kostenlosem Datenschutz-Generator.de von Dr. Thomas Schwenke</a>
|
||||
</p>
|
|
@ -1,37 +0,0 @@
|
|||
---
|
||||
layout: home.njk
|
||||
key: home
|
||||
title: Home
|
||||
eleventyNavigation:
|
||||
key: home
|
||||
title: Home
|
||||
icon: home
|
||||
---
|
||||
<div class="row justify-content-center py-4 border-top">
|
||||
<div class="col-lg-8 col-md-10 col-12">
|
||||
<h1 class="heading">Willkommen bei sp‑codes!</h1>
|
||||
<p class="lead text-center mb-2">
|
||||
Schön, dass du hergefunden hast. Mein Name ist Samuel Philipp und ich bin ein Software Engineer aus
|
||||
Magdeburg. Auf dieser Seite findest du Informationen über mich und eine Übersicht über die von mir
|
||||
bereitgestellten Dienste. Schau dich gerne um oder nutze die verschiedenen Tools.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row justify-content-center py-4 border-top">
|
||||
<div class="col-lg-8 col-md-10 col-12">
|
||||
<h1 class="heading"><a href="/{{locale}}/services">Dienste</a></h1>
|
||||
<div class="row">
|
||||
{% include services-simple.html %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row justify-content-center pt-4 border-top">
|
||||
<div class="col-lg-8 col-md-10 col-12">
|
||||
<h1 class="heading">Profile & Kontakt</h1>
|
||||
<p class="lead text-center mb-2">
|
||||
Du hast einen Fehler gefunden, Verbesserungsvorschläge, oder eine andere Frage? Nimm gerne
|
||||
über eine der folgenden Plattformen Kontakt mit mir auf. Ich freue mich auf deine Nachricht!
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% include profiles.html %}
|
|
@ -1,229 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
title: Datenschutzerklärung
|
||||
---
|
||||
<h1>Datenschutzerklärung</h1>
|
||||
<p>Stand: 29. Juni 2020</p>
|
||||
<h2>Inhaltsübersicht</h2>
|
||||
<ul>
|
||||
<li><a href="/{{locale}}/privacy#m1">Verantwortlicher</a></li>
|
||||
<li><a href="/{{locale}}/privacy#m2">Übersicht der Verarbeitungen</a></li>
|
||||
<li><a href="/{{locale}}/privacy#m3">Maßgebliche Rechtsgrundlagen</a></li>
|
||||
<li><a href="/{{locale}}/privacy#m4">Sicherheitsmaßnahmen</a></li>
|
||||
<li><a href="/{{locale}}/privacy#m5">Bereitstellung des Onlineangebotes und Webhosting</a></li>
|
||||
<li><a href="/{{locale}}/privacy#m6">Löschung von Daten</a></li>
|
||||
<li><a href="/{{locale}}/privacy#m7">Änderung und Aktualisierung der Datenschutzerklärung</a></li>
|
||||
<li><a href="/{{locale}}/privacy#m8">Rechte der betroffenen Personen</a></li>
|
||||
</ul>
|
||||
<div class="mb-3 border-bottom">
|
||||
<h2 id="m1">Verantwortlicher</h2>
|
||||
<p>
|
||||
Samuel Philipp<br>
|
||||
Otto-von-Guericke-Straße 40a<br>
|
||||
39104 Magdeburg, Deutschland<br>
|
||||
</p>
|
||||
<p>
|
||||
<strong>E-Mail-Adresse:</strong> info@sp-codes.de<br>
|
||||
<strong>Impressum:</strong> <a href="/{{locale}}/imprint"
|
||||
target="_blank">http://sp-codes.de/{{locale}}/imprint</a>
|
||||
</p>
|
||||
</div>
|
||||
<h2 id="m2">Übersicht der Verarbeitungen</h2>
|
||||
<div class="mb-3 border-bottom">
|
||||
<p>Die nachfolgende Übersicht fasst die Arten der verarbeiteten Daten und die Zwecke ihrer Verarbeitung zusammen und
|
||||
verweist auf die betroffenen Personen.</p>
|
||||
<h3>Arten der verarbeiteten Daten</h3>
|
||||
<ul>
|
||||
<li>Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos).</li>
|
||||
<li>Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).</li>
|
||||
<li>Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten).</li>
|
||||
</ul>
|
||||
<h3>Kategorien betroffener Personen</h3>
|
||||
<ul>
|
||||
<li>Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).</li>
|
||||
</ul>
|
||||
<h3 id="m3">Maßgebliche Rechtsgrundlagen</h3>
|
||||
<p>Im Folgenden teilen wir die Rechtsgrundlagen der
|
||||
Datenschutzgrundverordnung (DSGVO), auf deren Basis wir die personenbezogenen Daten verarbeiten, mit. Bitte
|
||||
beachten
|
||||
Sie, dass zusätzlich zu den Regelungen der DSGVO die nationalen Datenschutzvorgaben in Ihrem bzw. unserem Wohn-
|
||||
und
|
||||
Sitzland gelten können. Sollten ferner im Einzelfall speziellere Rechtsgrundlagen maßgeblich sein, teilen wir
|
||||
Ihnen
|
||||
diese in der Datenschutzerklärung mit.</p>
|
||||
<ul>
|
||||
<li><strong>Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO)</strong> - Die Verarbeitung ist zur
|
||||
Wahrung
|
||||
der berechtigten Interessen des Verantwortlichen oder eines Dritten erforderlich, sofern nicht die
|
||||
Interessen
|
||||
oder Grundrechte und Grundfreiheiten der betroffenen Person, die den Schutz personenbezogener Daten
|
||||
erfordern,
|
||||
überwiegen.
|
||||
</li>
|
||||
</ul>
|
||||
<p><strong>Nationale Datenschutzregelungen in Deutschland</strong>: Zusätzlich zu den Datenschutzregelungen der
|
||||
Datenschutz-Grundverordnung gelten nationale Regelungen zum Datenschutz in Deutschland. Hierzu gehört
|
||||
insbesondere
|
||||
das Gesetz zum Schutz vor Missbrauch personenbezogener Daten bei der Datenverarbeitung (Bundesdatenschutzgesetz
|
||||
–
|
||||
BDSG). Das BDSG enthält insbesondere Spezialregelungen zum Recht auf Auskunft, zum Recht auf Löschung, zum
|
||||
Widerspruchsrecht, zur Verarbeitung besonderer Kategorien personenbezogener Daten, zur Verarbeitung für andere
|
||||
Zwecke und zur Übermittlung sowie automatisierten Entscheidungsfindung im Einzelfall einschließlich Profiling.
|
||||
Des
|
||||
Weiteren regelt es die Datenverarbeitung für Zwecke des Beschäftigungsverhältnisses (§ 26 BDSG), insbesondere im
|
||||
Hinblick auf die Begründung, Durchführung oder Beendigung von Beschäftigungsverhältnissen sowie die Einwilligung
|
||||
von
|
||||
Beschäftigten. Ferner können Landesdatenschutzgesetze der einzelnen Bundesländer zur Anwendung gelangen.</p>
|
||||
</div>
|
||||
<div class="mb-3 border-bottom">
|
||||
<h2 id="m4">Sicherheitsmaßnahmen</h2>
|
||||
<p>Wir treffen nach Maßgabe der gesetzlichen Vorgaben unter Berücksichtigung des
|
||||
Stands der Technik, der Implementierungskosten und der Art, des Umfangs, der Umstände und der Zwecke der
|
||||
Verarbeitung sowie der unterschiedlichen Eintrittswahrscheinlichkeiten und des Ausmaßes der Bedrohung der Rechte
|
||||
und
|
||||
Freiheiten natürlicher Personen geeignete technische und organisatorische Maßnahmen, um ein dem Risiko
|
||||
angemessenes
|
||||
Schutzniveau zu gewährleisten.</p>
|
||||
<p>Zu den Maßnahmen gehören insbesondere die Sicherung der Vertraulichkeit, Integrität und Verfügbarkeit von Daten
|
||||
durch
|
||||
Kontrolle des physischen und elektronischen Zugangs zu den Daten als auch des sie betreffenden Zugriffs, der
|
||||
Eingabe, der Weitergabe, der Sicherung der Verfügbarkeit und ihrer Trennung. Des Weiteren haben wir Verfahren
|
||||
eingerichtet, die eine Wahrnehmung von Betroffenenrechten, die Löschung von Daten und Reaktionen auf die
|
||||
Gefährdung
|
||||
der Daten gewährleisten. Ferner berücksichtigen wir den Schutz personenbezogener Daten bereits bei der
|
||||
Entwicklung
|
||||
bzw. Auswahl von Hardware, Software sowie Verfahren entsprechend dem Prinzip des Datenschutzes, durch
|
||||
Technikgestaltung und durch datenschutzfreundliche Voreinstellungen.</p>
|
||||
</div>
|
||||
<div class="mb-3 border-bottom">
|
||||
<h2 id="m5">Bereitstellung des Onlineangebotes und Webhosting</h2>
|
||||
<p>Um unser Onlineangebot sicher und effizient
|
||||
bereitstellen zu können, nehmen wir die Leistungen von einem oder mehreren Webhosting-Anbietern in Anspruch, von
|
||||
deren Servern (bzw. von ihnen verwalteten Servern) das Onlineangebot abgerufen werden kann. Zu diesen Zwecken
|
||||
können
|
||||
wir Infrastruktur- und Plattformdienstleistungen, Rechenkapazität, Speicherplatz und Datenbankdienste sowie
|
||||
Sicherheitsleistungen und technische Wartungsleistungen in Anspruch nehmen.</p>
|
||||
<p>Zu den im Rahmen der Bereitstellung des Hostingangebotes verarbeiteten Daten können alle die Nutzer unseres
|
||||
Onlineangebotes betreffenden Angaben gehören, die im Rahmen der Nutzung und der Kommunikation anfallen. Hierzu
|
||||
gehören regelmäßig die IP-Adresse, die notwendig ist, um die Inhalte von Onlineangeboten an Browser ausliefern
|
||||
zu
|
||||
können, und alle innerhalb unseres Onlineangebotes oder von Webseiten getätigten Eingaben.</p>
|
||||
<p><strong>E-Mail-Versand und -Hosting</strong>: Die von uns in Anspruch genommenen Webhosting-Leistungen umfassen
|
||||
ebenfalls den Versand, den Empfang sowie die Speicherung von E-Mails. Zu diesen Zwecken werden die Adressen der
|
||||
Empfänger sowie Absender als auch weitere Informationen betreffend den E-Mailversand (z.B. die beteiligten
|
||||
Provider)
|
||||
sowie die Inhalte der jeweiligen E-Mails verarbeitet. Die vorgenannten Daten können ferner zu Zwecken der
|
||||
Erkennung
|
||||
von SPAM verarbeitet werden. Wir bitten darum, zu beachten, dass E-Mails im Internet grundsätzlich nicht
|
||||
verschlüsselt versendet werden. Im Regelfall werden E-Mails zwar auf dem Transportweg verschlüsselt, aber
|
||||
(sofern
|
||||
kein sogenanntes Ende-zu-Ende-Verschlüsselungsverfahren eingesetzt wird) nicht auf den Servern, von denen sie
|
||||
abgesendet und empfangen werden. Wir können daher für den Übertragungsweg der E-Mails zwischen dem Absender und
|
||||
dem
|
||||
Empfang auf unserem Server keine Verantwortung übernehmen.</p>
|
||||
<p><strong>Erhebung von Zugriffsdaten und Logfiles</strong>: Wir selbst (bzw. unser Webhostinganbieter) erheben
|
||||
Daten zu
|
||||
jedem Zugriff auf den Server (sogenannte Serverlogfiles). Zu den Serverlogfiles können die Adresse und Name der
|
||||
abgerufenen Webseiten und Dateien, Datum und Uhrzeit des Abrufs, übertragene Datenmengen, Meldung über
|
||||
erfolgreichen
|
||||
Abruf, Browsertyp nebst Version, das Betriebssystem des Nutzers, Referrer URL (die zuvor besuchte Seite) und im
|
||||
Regelfall IP-Adressen und der anfragende Provider gehören.</p>
|
||||
<p>Die Serverlogfiles können zum einen zu Zwecken der Sicherheit eingesetzt werden, z.B., um eine Überlastung der
|
||||
Server
|
||||
zu vermeiden (insbesondere im Fall von missbräuchlichen Angriffen, sogenannten DDoS-Attacken) und zum anderen,
|
||||
um
|
||||
die Auslastung der Server und ihre Stabilität sicherzustellen.</p>
|
||||
<ul class="m-elements">
|
||||
<li><strong>Verarbeitete Datenarten:</strong> Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos),
|
||||
Nutzungsdaten
|
||||
(z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B.
|
||||
Geräte-Informationen, IP-Adressen).
|
||||
</li>
|
||||
<li><strong>Betroffene Personen:</strong> Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).</li>
|
||||
<li><strong>Rechtsgrundlagen:</strong> Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="mb-3 border-bottom">
|
||||
<h2 id="m6">Löschung von Daten</h2>
|
||||
<p>Die von uns verarbeiteten Daten werden nach Maßgabe der gesetzlichen
|
||||
Vorgaben gelöscht, sobald deren zur Verarbeitung erlaubten Einwilligungen widerrufen werden oder sonstige
|
||||
Erlaubnisse entfallen (z.B., wenn der Zweck der Verarbeitung dieser Daten entfallen ist oder sie für den Zweck
|
||||
nicht
|
||||
erforderlich sind).</p>
|
||||
<p>Sofern die Daten nicht gelöscht werden, weil sie für andere und gesetzlich zulässige Zwecke erforderlich sind,
|
||||
wird
|
||||
deren Verarbeitung auf diese Zwecke beschränkt. D.h., die Daten werden gesperrt und nicht für andere Zwecke
|
||||
verarbeitet. Das gilt z.B. für Daten, die aus handels- oder steuerrechtlichen Gründen aufbewahrt werden müssen
|
||||
oder
|
||||
deren Speicherung zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen oder zum Schutz der Rechte
|
||||
einer anderen natürlichen oder juristischen Person erforderlich ist.</p>
|
||||
<p>Weitere Hinweise zu der Löschung von personenbezogenen Daten können ferner im Rahmen der einzelnen
|
||||
Datenschutzhinweise dieser Datenschutzerklärung erfolgen.</p>
|
||||
</div>
|
||||
<div class="mb-3 border-bottom">
|
||||
<h2 id="m7">Änderung und Aktualisierung der Datenschutzerklärung</h2>
|
||||
<p>Wir bitten Sie, sich regelmäßig über den Inhalt
|
||||
unserer Datenschutzerklärung zu informieren. Wir passen die Datenschutzerklärung an, sobald die Änderungen der
|
||||
von
|
||||
uns durchgeführten Datenverarbeitungen dies erforderlich machen. Wir informieren Sie, sobald durch die
|
||||
Änderungen
|
||||
eine Mitwirkungshandlung Ihrerseits (z.B. Einwilligung) oder eine sonstige individuelle Benachrichtigung
|
||||
erforderlich wird.</p>
|
||||
<p>Sofern wir in dieser Datenschutzerklärung Adressen und Kontaktinformationen von Unternehmen und Organisationen
|
||||
angeben, bitten wir zu beachten, dass die Adressen sich über die Zeit ändern können und bitten die Angaben vor
|
||||
Kontaktaufnahme zu prüfen.</p>
|
||||
</div>
|
||||
<div class="mb-3 border-bottom">
|
||||
<h2 id="m8">Rechte der betroffenen Personen</h2>
|
||||
<p>Ihnen stehen als Betroffene nach der DSGVO verschiedene Rechte zu,
|
||||
die sich insbesondere aus Art. 15 bis 21 DSGVO ergeben:</p>
|
||||
<ul>
|
||||
<li><strong>Widerspruchsrecht: Sie haben das Recht, aus Gründen, die sich aus Ihrer besonderen Situation
|
||||
ergeben,
|
||||
jederzeit gegen die Verarbeitung der Sie betreffenden personenbezogenen Daten, die aufgrund von Art. 6 Abs.
|
||||
1
|
||||
lit. e oder f DSGVO erfolgt, Widerspruch einzulegen; dies gilt auch für ein auf diese Bestimmungen
|
||||
gestütztes
|
||||
Profiling. Werden die Sie betreffenden personenbezogenen Daten verarbeitet, um Direktwerbung zu betreiben,
|
||||
haben
|
||||
Sie das Recht, jederzeit Widerspruch gegen die Verarbeitung der Sie betreffenden personenbezogenen Daten zum
|
||||
Zwecke derartiger Werbung einzulegen; dies gilt auch für das Profiling, soweit es mit solcher Direktwerbung
|
||||
in
|
||||
Verbindung steht.</strong></li>
|
||||
<li><strong>Widerrufsrecht bei Einwilligungen:</strong> Sie haben das Recht, erteilte Einwilligungen jederzeit
|
||||
zu
|
||||
widerrufen.
|
||||
</li>
|
||||
<li><strong>Auskunftsrecht:</strong> Sie haben das Recht, eine Bestätigung darüber zu verlangen, ob betreffende
|
||||
Daten verarbeitet werden und auf Auskunft über diese Daten sowie auf weitere Informationen und Kopie der
|
||||
Daten
|
||||
entsprechend den gesetzlichen Vorgaben.
|
||||
</li>
|
||||
<li><strong>Recht auf Berichtigung:</strong> Sie haben entsprechend den gesetzlichen Vorgaben das Recht, die
|
||||
Vervollständigung der Sie betreffenden Daten oder die Berichtigung der Sie betreffenden unrichtigen Daten zu
|
||||
verlangen.
|
||||
</li>
|
||||
<li><strong>Recht auf Löschung und Einschränkung der Verarbeitung:</strong> Sie haben nach Maßgabe der
|
||||
gesetzlichen
|
||||
Vorgaben das Recht, zu verlangen, dass Sie betreffende Daten unverzüglich gelöscht werden, bzw. alternativ
|
||||
nach
|
||||
Maßgabe der gesetzlichen Vorgaben eine Einschränkung der Verarbeitung der Daten zu verlangen.
|
||||
</li>
|
||||
<li><strong>Recht auf Datenübertragbarkeit:</strong> Sie haben das Recht, Sie betreffende Daten, die Sie uns
|
||||
bereitgestellt haben, nach Maßgabe der gesetzlichen Vorgaben in einem strukturierten, gängigen und
|
||||
maschinenlesbaren Format zu erhalten oder deren Übermittlung an einen anderen Verantwortlichen zu fordern.
|
||||
</li>
|
||||
<li><strong>Beschwerde bei Aufsichtsbehörde:</strong> Sie haben ferner nach Maßgabe der gesetzlichen Vorgaben
|
||||
das
|
||||
Recht, bei einer Aufsichtsbehörde, insbesondere in dem Mitgliedstaat Ihres gewöhnlichen Aufenthaltsorts,
|
||||
Ihres
|
||||
Arbeitsplatzes oder des Orts des mutmaßlichen Verstoßes Beschwerde einzulegen, wenn Sie der Ansicht sind,
|
||||
dass
|
||||
die Verarbeitung der Sie betreffenden personenbezogenen Daten gegen die DSGVO verstößt.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<p><a href="https://datenschutz-generator.de/?l=de"
|
||||
title="Rechtstext von Dr. Schwenke - für weitere Informationen bitte anklicken." target="_blank"
|
||||
rel="noopener noreferrer nofollow">Erstellt mit kostenlosem Datenschutz-Generator.de von Dr. Thomas Schwenke</a>
|
||||
</p>
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
layout: services.njk
|
||||
key: services
|
||||
title: Dienste
|
||||
eleventyNavigation:
|
||||
key: services
|
||||
title: Dienste
|
||||
icon: server
|
||||
order: 2
|
||||
---
|
||||
<h1>Dienste</h1>
|
||||
<p>In meiner Freizeit stelle ich verschiedene quelloffene Dienste für die freie Nutzung bereit. Hier findest du eine
|
||||
Übersicht der einzelnen Services und jeweils eine kurze Beschreibung. Alle Services werden in Deutschland
|
||||
gehostet. Fühl dich frei davon Gebrauch zu machen.</p>
|
|
@ -1,62 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: connectivitycheck
|
||||
title: Captive Portal Check
|
||||
---
|
||||
# Captive Portal Check
|
||||
|
||||
Ein Captive Portal ist eine Anmeldeseite in öffentlichen WLAN-Netzwerken um den Internet-Zugriff an die Zustimmung bestimmter Nutzungsregeln zu binden. Wenn du in einem öffentlichen Netzwerk eine Anmeldeseite angezeigt bekommst, nutzt dein Gerät dafür einen Captive Portal Check. Dieser ermöglicht es dem Gerät herauszufinden, ob du einen direkten Internetzugang hast oder nicht. Unter Android wird hierfür beispielsweise eine Anfrage an einen Google-Server gestellt.
|
||||
|
||||
__Seit Mitte 2019 stelle ich einen freien Captive Portal Check zur Verfügung: [https://connectivitycheck.sp-codes.de/generate204](https://connectivitycheck.sp-codes.de/generate204)__ Gerne kannst du ihn nutzen, wenn du möchtest.
|
||||
|
||||
## Einrichtung in Android
|
||||
|
||||
Um den Captive Portal Check in Android zu ändern, benötigt man eine Terminal-App oder eine Verbindung über ADB zu einem Computer.
|
||||
|
||||
Nun können die folgenden Befehle mit der jeweiligen Methode ausgeführt werden, um `http` zu verwenden:
|
||||
|
||||
```
|
||||
# settings put global captive_portal_use_https 0
|
||||
# settings put global captive_portal_http_url "http://connectivitycheck.sp-codes.de/generate204"
|
||||
```
|
||||
|
||||
|
||||
Um `https` zu verwenden müssen die beiden folgenden Befehle genutzt werden:
|
||||
|
||||
|
||||
```
|
||||
# settings put global captive_portal_use_https 1
|
||||
# settings put global captive_portal_https_url "https://connectivitycheck.sp-codes.de/generate204"
|
||||
```
|
||||
|
||||
Eventuell musst du dein Gerät anschließend neu starten.
|
||||
|
||||
Wenn du AFWall+ verwendest musst du _[1000] Android-System_ und eventuell _[10040] CaptivePortalLogin_ Internetzugriff gewähren.
|
||||
|
||||
## Einrichtung in Ubuntu
|
||||
|
||||
Unter Ubuntu muss die Datei `/etc/NetworkManager/NetworkManager.conf` geändert werden. Füge die folgenden Zeilen hinzu, oder passe sie entsprechend an:
|
||||
|
||||
```
|
||||
[connectivity]
|
||||
uri=https://connectivitycheck.sp-codes.de/generate204
|
||||
```
|
||||
|
||||
Starte den _network-manager_ neu:
|
||||
|
||||
```
|
||||
sudo service network-manager restart
|
||||
```
|
||||
|
||||
## Einrichtung in Firefox
|
||||
|
||||
Tippe [about:config](about:config) in die Adresszeile von Firefox und suche anschließend nach `captivedetect.canonicalURL` und `network.connectivity-service`. Setze die URL-Werte auf `https://connectivitycheck.sp-codes.de/generate204`, die Domain-Werte auf `connectivitycheck.sp-codes.de`. Das war es schon.
|
||||
|
||||
## Weitere nützliche Links
|
||||
|
||||
* [Captive Portal Wikipedia](https://de.wikipedia.org/wiki/Captive_Portal)
|
||||
* [Quellcode](https://git.sp-codes.de/samuel-p/connectivity-check)
|
||||
* [Docker Image](https://hub.docker.com/r/samuelph/connectivity-check)
|
||||
* [Setup on Android](https://android.stackexchange.com/a/186995/288049)
|
||||
* [Setup on Ubuntu](https://askubuntu.com/q/1167177/920103)
|
||||
* [Captive Portal Kuketz Blog](https://www.kuketz-blog.de/android-captive-portal-check-204-http-antwort-von-captiveportal-kuketz-de/)
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: firefox-sync
|
||||
title: Firefox Sync
|
||||
---
|
||||
# Firefox Sync
|
||||
|
||||
Nutzt du Firefox auf mehreren Geräten zum Surfen? Dann kannst du mit Firefox Sync deine Browserdaten (Lesezeichen, offene Tabs, die Suchhistorie, uvm.) zwischen all deinen Geräten synchronisieren.
|
||||
|
||||
Dafür benötigst du zunächst einen Firefox-Account und musst dich auf deinen Geräten damit anmelden. Standardmäßig nutzt du dann automatisch den Sync-Service von Mozilla. Möchtest du einen anderen Server nutzen kannst du das in den Einstellungen ändern.
|
||||
|
||||
__Seit Februar 2020 biete ich einen öffentlichen Service für Firefox-Sync an.__ Gerne kannst du ihn nutzen um deine Daten zwischen deinen Geräten zu synchronisieren.
|
||||
|
||||
Tippe dafür [about:config](about:config) in die Adresszeile von Firefox und suche anschließend nach `identity.sync.tokenserver.uri` und setze den Wert auf `https://sync.firefox.sp-codes.de/token/1.0/sync/1.5`. Du nutzt nun den eingetragenen Sync-Service.
|
||||
|
||||
## Weitere nützliche Links
|
||||
|
||||
* [Firefox Sync](https://www.mozilla.org/de/firefox/accounts/)
|
||||
* [Quellcode](https://github.com/mozilla-services/syncserver)
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: gitea
|
||||
title: Gitea
|
||||
---
|
||||
# Gitea
|
||||
|
||||
Gitea ist eine einfache Code-Hosting-Plattform wie GitHub oder GitLab. Sie ist opensource und wird kontinuierlich weiterentwickelt. __Seit Ende 2019 betreibe ich eine eigene Gitea Instanz, in der ich meine Projekte verwalte.__ So zum Beispiel auch diese Webseite. Schau dir gerne mal den Quelltext an und lass mir Feedback da.
|
||||
|
||||
Zusätzlich zu Gitea betreibe ich noch Drone, eine Plattform, die Gitea um viele Continuous Integration Funktionen erweitert und beispielsweise automatisierte Builds und Deploys ermöglicht.
|
||||
|
||||
Schau gerne mal vorbei und melde dich an, falls du Lust hast ein Projekt zu entwickeln. Die Registrierung ist seit März 2020 geöffnet.
|
||||
|
||||
__Zu Gitea geht's hier lang: [git.sp-codes.de](https://git.sp-codes.de)__
|
||||
|
||||
__Wenn du bei Drone vorbeischauen willst geht das hier: [ci.sp-codes.de](https://ci.sp-codes.de)__
|
||||
|
||||
|
||||
## Weitere nützliche Links
|
||||
|
||||
* [Gitea Webseite](https://gitea.io/en-us/)
|
||||
* [Quellcode von Gitea](https://github.com/go-gitea/gitea)
|
||||
* [Drone Webseite](https://drone.io/)
|
||||
* [Quellcode von Drone](https://github.com/drone/drone)
|
|
@ -1,18 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: invidious
|
||||
title: Invidious
|
||||
---
|
||||
# Invidious
|
||||
|
||||
Invidious ist ein alternatives Frontend für YouTube.
|
||||
Da nur die nötigsten Verbindungen zu YouTube aufgebaut werden und viele sogar vom Server selber übernommen werden erhöht Invidious die Privatsphäre der Nutzer.
|
||||
|
||||
__Seit Dezember 2019 betreibe ich eine öffentliche Invidious Instanz.__ Fühl dich frei dort ein paar Videos anzuschauen.
|
||||
|
||||
__Jetzt das erste Video schauen auf [invidious.sp-codes.de](https://invidious.sp-codes.de).__
|
||||
|
||||
## Weitere nützliche Links
|
||||
|
||||
* [Liste weiterer öffentlicher Server](https://github.com/omarroth/invidious/wiki/Invidious-Instances)
|
||||
* [Quellcode von Invidious](https://github.com/omarroth/invidious)
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: matrix
|
||||
title: Matrix
|
||||
---
|
||||
# Matrix
|
||||
|
||||
[Matrix](https://matrix.org) ist eine moderne, quelloffene Software für dezentrale Kommunikation (wie E-Mail). Matrix bietet von Haus aus Sprach- und Videoanrufe, inklusive Ende-zu-Ende Verschlüsselung und vieles mehr. Das Entscheidende ist, dass es nicht den einen Matrix-Server gibt, den alle Nutzer verwenden müssen, wie das beispielsweise bei WhatsApp, Telegram und vielen anderen verbreiteten Messengern der Fall ist.
|
||||
|
||||
Da Matrix dezentral funktioniert können sich die Nutzer einen öffentlichen Server aussuchen oder ihren eigenen erstellen und trotzdem mit allen Matrix-Nutzern kommunizieren, nicht nur mit denen des eigenen Servers. Die verschickten Nachrichten werden so nur auf den beteiligten Servern gespeichert. Auch die Anrufe laufen nur über die beteiligten Server.
|
||||
|
||||
__Seit Anfang 2020 betreibe ich einen öffentlichen Matrix-Server: [matrix.sp-codes.de](https://matrix.sp-codes.de/) Und eine öffentliche Riot-Web Instanz: [chat.sp-codes.de](https://chat.sp-codes.de/)__
|
||||
|
||||
Melde dich gerne auf meinem Server an oder suche dir einen aus der unten verlinkten Liste heraus. Ich freue mich auf deine Nachricht an [@samuel-p:matrix.sp-codes.de](https://matrix.to/#/@samuel-p:matrix.sp-codes.de).
|
||||
|
||||
## Weitere nützliche Links
|
||||
|
||||
* [Verschiedene Apps](https://matrix.org/clients)
|
||||
* [Liste öffentlicher Räume](https://view.matrix.org/)
|
||||
* [Liste öffentlicher Matrix-Server](https://www.hello-matrix.net/public_servers.php)
|
||||
* [Matrix FAQ](https://matrix.org/faq/)
|
|
@ -1,25 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: searx
|
||||
title: Searx
|
||||
---
|
||||
# Searx
|
||||
|
||||
Searx ist eine freie Metasuchmaschine, das heißt sie nutzt für die Suche öffentliche Suchmaschinen, wie Google, DuckDuckGo, StartPage und viele andere.
|
||||
|
||||
Um die Privatsphäre der Benutzer zu schützen, gibt Searx weder die IP-Adresse, noch die Suchhistorie an die Suchmaschinen weiter, von denen die Ergebnisse abgefragt werden. Searx selber speichert ebenfalls keine Suchanfragen oder andere Logs. Zusätzlch stellt Searx eine Vielzahl an Einstellungsmöglichkeiten bereit, beispielsweise können die Sprache und die verwendeten Suchmaschinen für jede Suchanfrage konfiguriert werden.
|
||||
|
||||
Außerdem stellt Searx einen Proxy bereit über den viele Suchergebnisse auch anonym aufgerufen werden können. Klicke dafür nicht auf den Direktlink, sonden auf `proxied` in der unteren rechten Ecke des Suchergebnisses.
|
||||
|
||||
__Seit November 2019 betreibe ich eine öffentliche Searx Instanz.__ Schau gerne mal vorbei um Antworten auf deine Fragen zu erhalten. Bei Fragen oder Problemen schreib mir gerne.
|
||||
|
||||
__Hier gehts zu Searx: [searx.sp-codes.de](https://searx.sp-codes.de)__
|
||||
|
||||
## Weitere nützliche Links
|
||||
|
||||
* [Searx Webseite](https://asciimoo.github.io/searx/)
|
||||
* [Benutzer-Dokumentation](https://asciimoo.github.io/searx/user/index.html)
|
||||
* [Standardsuchmaschine in Firefox festlegen](https://support.mozilla.org/de/kb/suchmaschinen-in-firefox-hinzufuegen-oder-entfernen)
|
||||
* [Standardsuchmaschine in Chrome festlegen](https://support.google.com/chrome/answer/95426?co=GENIE.Platform%3DDesktop&hl=de)
|
||||
* [Liste weiterer öffentlicher Server](https://searx.space/)
|
||||
* [Quellcode von Searx](https://github.com/asciimoo/searx)
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: 404
|
||||
title: Not Found
|
||||
---
|
||||
# Not Found
|
||||
|
||||
This page does not exist (yet). Come back later or take a look at the beginning: [Home](/{{locale}}/)
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"locale": "en"
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
title: sp-codes
|
||||
---
|
||||
<div class="legal">
|
||||
<h1>Imprint</h1>
|
||||
<p>Sorry, this document is only available in German so far. Read it <a href="/de/imprint">here</a>.</p>
|
||||
</div>
|
|
@ -1,38 +0,0 @@
|
|||
---
|
||||
layout: home.njk
|
||||
key: home
|
||||
title: Home
|
||||
eleventyNavigation:
|
||||
key: home
|
||||
title: Home
|
||||
icon: home
|
||||
---
|
||||
<div class="row justify-content-center py-4 border-top">
|
||||
<div class="col-lg-8 col-md-10 col-12">
|
||||
<h1 class="heading">Welcome to sp‑codes!</h1>
|
||||
<p class="lead text-center mb-2">
|
||||
Glad you found your way here. My name is Samuel Philipp and I am a software engineer from Magdeburg.
|
||||
On this site you will find information about me and an overview of the services I provide. Feel free
|
||||
to look around or use the various services.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row justify-content-center py-4 border-top">
|
||||
<div class="col-lg-8 col-md-10 col-12">
|
||||
<h1 class="heading"><a href="/{{locale}}/services">Services</a></h1>
|
||||
<div class="row">
|
||||
{% include services-simple.html %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row justify-content-center pt-4 border-top">
|
||||
<div class="col-lg-8 col-md-10 col-12">
|
||||
<h1 class="heading">Profiles & Contact</h1>
|
||||
<p class="lead text-center mb-2">
|
||||
You have found a mistake, suggestions, or any other question? Feel free to contact me via one of the
|
||||
following platforms. I look forward to your message!
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% include profiles.html %}
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
title: sp-codes
|
||||
---
|
||||
<body class="legal">
|
||||
<h2>Privacy</h2>
|
||||
<p>Sorry, this document is only available in German so far. Read it <a href="/de/privacy">here</a>.</p>
|
||||
</body>
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
layout: services.njk
|
||||
key: services
|
||||
title: Services
|
||||
eleventyNavigation:
|
||||
key: services
|
||||
title: Services
|
||||
icon: server
|
||||
order: 2
|
||||
---
|
||||
<h1>Services</h1>
|
||||
<p>In my spare time I provide various open source services for free. Here you can find an overview of the individual
|
||||
services and a short description for each of them. All services are hosted in Germany. Feel free to use it.</p>
|
|
@ -1,60 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: connectivitycheck
|
||||
title: Captive Portal Check
|
||||
---
|
||||
# Captive Portal Check
|
||||
|
||||
A captive portal is a login page in public WLAN networks to restrict Internet access to the approval of certain terms of use. When you see a login page on a public network, your device uses a captive portal check. This allows the device to find out whether you have direct Internet access or not. In Android, for example, your device sends a request to a Google server.
|
||||
|
||||
Since mid 2019 I provide a free Captive Portal Check: [https://connectivitycheck.sp-codes.de/generate204](https://connectivitycheck.sp-codes.de/generate204) You are welcome to use it.
|
||||
|
||||
## Setup in Android
|
||||
|
||||
To change the Captive Portal Check in Android, you need a terminal app or a connection via ADB to a computer.
|
||||
|
||||
To use `http` you can run the following commands with the respective method:
|
||||
|
||||
```
|
||||
# settings put global captive_portal_use_https 0
|
||||
# settings put global captive_portal_http_url "http://connectivitycheck.sp-codes.de/generate204"
|
||||
```
|
||||
|
||||
To use `https` you can use the following two commands:
|
||||
|
||||
```
|
||||
# settings put global captive_portal_use_https 1
|
||||
# settings put global captive_portal_https_url "https://connectivitycheck.sp-codes.de/generate204"
|
||||
```
|
||||
|
||||
Maybe you have to reboot your phone after updating the settings.
|
||||
|
||||
If you are using AFWall+ you need to give access to _[1000] Android-System_ and in some cases _[10040] CaptivePortalLogin_ to make it work.
|
||||
|
||||
## Setup in Ubuntu
|
||||
|
||||
In Ubuntu, the file `/etc/NetworkManager/NetworkManager.conf` must be changed. Add or change the following lines:
|
||||
|
||||
```
|
||||
[connectivity]
|
||||
uri=https://connectivitycheck.sp-codes.de/generate204
|
||||
```
|
||||
|
||||
Restart the network-manager:
|
||||
|
||||
```
|
||||
sudo service network-manager restart
|
||||
```
|
||||
|
||||
## Setup in Firefox
|
||||
|
||||
Type [about:config](about:config) in the Firefox address bar and search for `captivedetect.canonicalURL` and `network.connectivity-service`. Set the URL values to `https://connectivitycheck.sp-codes.de/generate204`, the domain values to `connectivitycheck.sp-codes.de`. That's it.
|
||||
|
||||
## More useful links
|
||||
|
||||
* [Captive Portal Wikipedia](https://en.wikipedia.org/wiki/Captive_portal)
|
||||
* [Source code](https://git.sp-codes.de/samuel-p/connectivity-check)
|
||||
* [Docker Image](https://hub.docker.com/r/samuelph/connectivity-check)
|
||||
* [Setup on Android](https://android.stackexchange.com/a/186995/288049)
|
||||
* [Setup on Ubuntu](https://askubuntu.com/q/1167177/920103)
|
||||
* [Captive Portal Kuketz Blog](https://www.kuketz-blog.de/android-captive-portal-check-204-http-antwort-von-captiveportal-kuketz-de/)
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: firefox-sync
|
||||
title: Firefox Sync
|
||||
---
|
||||
# Firefox Sync
|
||||
|
||||
Do you use Firefox on more than one device for surfing? Then Firefox Sync lets you synchronize your browser data (bookmarks, open tabs, search history, and more) between all your devices.
|
||||
|
||||
To do this, you first need a Firefox account and must log in to your devices. By default, you will then automatically use the Mozilla sync service. If you want to use a different server you can change this in the settings.
|
||||
|
||||
__Since February 2020 I offer a public service for Firefox-Sync.__ You can use it to synchronize your data between your devices.
|
||||
|
||||
Therefore type [about:config](about:config) in the Firefox address bar, search for `identity.sync.tokenserver.uri` and set the value to `https://sync.firefox.sp-codes.de/token/1.0/sync/1.5`. You are now using the entered sync service.
|
||||
|
||||
## More useful links
|
||||
|
||||
* [Firefox Sync](https://www.mozilla.org/de/firefox/accounts/)
|
||||
* [Source code](https://github.com/mozilla-services/syncserver)
|
|
@ -1,23 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: gitea
|
||||
title: Gitea
|
||||
---
|
||||
# Gitea
|
||||
|
||||
Gitea is a simple code hosting platform like GitHub or GitLab. It is open source and under continuous development. __Since the end of 2019 I have my own Gitea instance, to manage my projects.__ For example this website. Feel free to have a look at the source code and leave some feedback.
|
||||
|
||||
In addition to Gitea, I also run Drone, a platform that extends Gitea with many continuous integration features, such as automated builds and deploys.
|
||||
|
||||
Feel free to visit and sign up if you're interested in developing a project. The registration is open since March 2020.
|
||||
|
||||
__To get to Gitea click here: [git.sp-codes.de](https://git.sp-codes.de)__
|
||||
|
||||
__If you want to check out Drone, click here: [ci.sp-codes.de](https://ci.sp-codes.de)__
|
||||
|
||||
## More useful links
|
||||
|
||||
* [Gitea website](https://gitea.io/en-us/)
|
||||
* [Source code of Gitea](https://github.com/go-gitea/gitea)
|
||||
* [Drone Website](https://drone.io/)
|
||||
* [Source code of Drone](https://github.com/drone/drone)
|
|
@ -1,17 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: invidious
|
||||
title: Invidious
|
||||
---
|
||||
# Invidious
|
||||
|
||||
Invidious is an alternative YouTube-Frontend. It establishes only the most necessary connections to YouTube and many of them are even made by the server itself. So Invidious increases the privacy of the users.
|
||||
|
||||
__Since December 2019 I run a public Invidious instance.__ Feel free to watch some videos there.
|
||||
|
||||
__Watch your first video on [invidious.sp-codes.de](https://invidious.sp-codes.de).__
|
||||
|
||||
## More useful links
|
||||
|
||||
* [List of other public servers](https://github.com/omarroth/invidious/wiki/Invidious-Instances)
|
||||
* [Source code of Invidious](https://github.com/omarroth/invidious)
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: matrix
|
||||
title: Matrix
|
||||
---
|
||||
# Matrix
|
||||
|
||||
Matrix is a modern, open source software for decentralized communication (like e-mail). Matrix offers end-to-end encryption, voice and video calls and much more. However, the most important thing is that there is not one Matrix server that all users have to use, like WhatsApp, Telegram and many other popular messengers.
|
||||
|
||||
Users can choose a public server or create their own and still communicate with all Matrix users, not just those on their own server. The messages are only stored on the participating servers. Calls also go only through the participating servers.
|
||||
|
||||
__Since the beginning of 2020 I run a public Matrix server: [matrix.sp-codes.de](https://matrix.sp-codes.de/) And a public Riot-Web instance: [chat.sp-codes.de](https://chat.sp-codes.de/)__
|
||||
|
||||
Feel free to create an account on my server or choose one from the list linked below. I look forward to hear from you [@samuel-p:matrix.sp-codes.de](https://matrix.to/#/@samuel-p:matrix.sp-codes.de).
|
||||
|
||||
## More useful links
|
||||
|
||||
* [Various Apps](https://matrix.org/clients)
|
||||
* [List of public rooms](https://view.matrix.org/)
|
||||
* [List of public matrix servers](https://www.hello-matrix.net/public_servers.php)
|
||||
* [Matrix FAQ](https://matrix.org/faq/)
|
|
@ -1,26 +0,0 @@
|
|||
---
|
||||
layout: base.njk
|
||||
key: searx
|
||||
title: Searx
|
||||
---
|
||||
# Searx
|
||||
|
||||
Searx is a free meta search engine, which uses other public search engines like Google, DuckDuckGo, StartPage and many others.
|
||||
|
||||
In order to protect the privacy of the users, Searx does not give the IP address, or the search history to the search engines it retrieves the results from. Searx itself also does not store any search queries or other logs. Additional it offers a variety of settings, for example, the language and the search engines can be configured for each search query.
|
||||
|
||||
Searx also provides a proxy through which many search results can be accessed anonymously. Instead of clicking on the direct link, use the `proxied` button in the bottom right corner of the search result.
|
||||
|
||||
__Since November 2019 I run a public Searx instance.__ Feel free to check it out and get answers to your questions. If you have any questions or problems, feel free to contact me.
|
||||
|
||||
Here is the link to Searx: [searx.sp-codes.de](https://searx.sp-codes.de)
|
||||
|
||||
|
||||
## More useful links
|
||||
|
||||
* [Searx Website](https://asciimoo.github.io/searx/)
|
||||
* [User-Documentation](https://asciimoo.github.io/searx/user/index.html)
|
||||
* [Set default search engine in Firefox](https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox)
|
||||
* [Set default search engine in Chrome](https://support.google.com/chrome/answer/95426?co=GENIE.Platform%3DDesktop&hl=en)
|
||||
* [List of other public servers](https://searx.space/)
|
||||
* [Source code of Searx](https://github.com/asciimoo/searx)
|
BIN
src/font/minotaur.ttf
Normal file
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 179 KiB After Width: | Height: | Size: 179 KiB |
51
src/imprint.html
Normal file
|
@ -0,0 +1,51 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>sp-codes - Impressum</title>
|
||||
<link rel="shortcut icon" href="img/samuel.png">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<link rel="stylesheet" href="css/main.min.css">
|
||||
</head>
|
||||
<body class="legal">
|
||||
<h1>Impressum</h1>
|
||||
<h2 id="m46">Diensteanbieter</h2>
|
||||
<p>Samuel Philipp</p>
|
||||
<p>Otto-von-Guericke-Straße 40a<br/>
|
||||
39104 Magdeburg<br/>
|
||||
Deutschland</p>
|
||||
<h2 id="m56">Kontaktmöglichkeiten</h2>
|
||||
<p><strong>E-Mail-Adresse</strong>: <a href="mailto:info@sp-codes.de" target="_blank">info@sp-codes.de</a></p>
|
||||
<!--<p><strong>Kontaktformular</strong>: <a href="https://sp-codes.de/contact" target="_blank">https://sp-codes.de/contact</a></p>-->
|
||||
<h2 id="m172">Onlinepräsenzen</h2>
|
||||
<p><strong>Dieses Impressum gilt auch für die folgenden Onlinepräsenzen</strong>:</p>
|
||||
<p><a href="https://samuel-philipp.de" target="_blank">https://samuel-philipp.de</a><br/>
|
||||
<a href="https://sp-codes.de" target="_blank">https://sp-codes.de</a><br/>
|
||||
<a href="https://sp-magic.de" target="_blank">https://sp-magic.de</a></p>
|
||||
<ul class="m-elements"></ul>
|
||||
<h2 id="m65">Haftungs- und Urheberrechtshinweise</h2>
|
||||
<p><strong>Haftungsausschluss</strong>: Die Inhalte dieses Onlineangebotes wurden sorgfältig und nach unserem aktuellen
|
||||
Kenntnisstand erstellt, dienen jedoch nur der Information und entfalten keine rechtlich bindende Wirkung, sofern es
|
||||
sich nicht um gesetzlich verpflichtende Informationen (z.B. das Impressum, die Datenschutzerklärung, AGB oder
|
||||
Widerrufsbelehrungen für Verbraucher) handelt. Wir behalten uns vor, die Inhalte vollständig oder teilweise zu
|
||||
ändern oder zu löschen, soweit vertragliche Verpflichtungen unberührt bleiben. Alle Angebote sind freibleibend und
|
||||
unverbindlich. </p>
|
||||
<p><strong>Links auf fremde Webseiten</strong>: Inhalte fremder Webseiten, auf die wir direkt oder indirekt verweisen,
|
||||
liegen außerhalb unseres Verantwortungsbereiches und machen wir uns nicht zu Eigen. Für alle Inhalte und
|
||||
insbesondere für Schäden, die aus der Nutzung der in den verlinkten Webseiten aufrufbaren Informationen entstehen,
|
||||
haftet allein der Anbieter der verlinkten Webseiten.</p>
|
||||
<p><strong>Urheberrechte und Markenrechte</strong>: Alle auf dieser Website dargestellten Inhalte, wie Texte,
|
||||
Fotografien, Grafiken, Marken und Warenzeichen sind durch die jeweiligen Schutzrechte (Urheberrechte, Markenrechte)
|
||||
geschützt. Die Verwendung, Vervielfältigung usw. unterliegen unseren Rechten oder den Rechten der jeweiligen Urheber
|
||||
bzw. Rechteverwalter.</p>
|
||||
<p><strong>Hinweise auf Rechtsverstöße</strong>: Sollten Sie innerhalb unseres Internetauftritts Rechtsverstöße
|
||||
bemerken, bitten wir Sie uns auf diese hinzuweisen. Wir werden rechtswidrige Inhalte und Links nach Kenntnisnahme
|
||||
unverzüglich entfernen.</p>
|
||||
<ul class="m-elements"></ul>
|
||||
<p class="seal"><a href="https://datenschutz-generator.de/?l=de"
|
||||
title="Rechtstext von Dr. Schwenke - für weitere Informationen bitte anklicken." target="_blank">Erstellt
|
||||
mit kostenlosem Datenschutz-Generator.de von Dr. Thomas Schwenke</a></p>
|
||||
|
||||
</body>
|
||||
</html>
|
95
src/index.html
Normal file
|
@ -0,0 +1,95 @@
|
|||
<!doctype html>
|
||||
<html lang="en" prefix="og: http://ogp.me/ns#">
|
||||
<head>
|
||||
<title>sp-codes</title>
|
||||
<base href="/">
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="fragment" content="!">
|
||||
<meta name="target" content="all">
|
||||
<meta name="audience" content="all">
|
||||
<meta name="coverage" content="Worldwide">
|
||||
<meta name="distribution" content="Global">
|
||||
<meta name="rating" content="general">
|
||||
<meta name="url" content="https://sp-codes.de/">
|
||||
<meta name="subject" content="sp-codes">
|
||||
<meta name="description" content="Samuel Philipp - Software Engineer from Magdeburg">
|
||||
<meta name="author" content="Samuel Philipp">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:locale" content="de">
|
||||
<meta property="og:url" content="https://sp-codes.de/">
|
||||
<meta property="og:title" content="sp-codes">
|
||||
<meta property="og:description" content="Samuel Philipp - Software Engineer & Software Engineer">
|
||||
<meta property="og:site_name" content="sp-codes">
|
||||
<meta property="og:image" content="https://sp-codes.de/img/sp-codes.jpg">
|
||||
<!--<meta property="og:updated_time" content="">-->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="sp-codes">
|
||||
<meta name="twitter:description" content="Samuel Philipp - Software Engineer from Magdeburg">
|
||||
<meta name="twitter:image" content="https://sp-codes.de/img/sp-codes.jpg">
|
||||
<link rel="shortcut icon" href="img/samuel.png">
|
||||
<link rel="stylesheet" href="css/main.min.css">
|
||||
</head>
|
||||
<body class="d-flex flex-column">
|
||||
<div class="container flex-column flex-grow p-3">
|
||||
<div class="row py-5">
|
||||
<div class="col">
|
||||
<img class="logo" src="img/samuel.png">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row justify-content-center py-4 border-top-bottom">
|
||||
<div class="col-lg-8 col-md-10 col-12">
|
||||
<h1 class="sp-codes">SP-CODES</h1>
|
||||
<p class="lead text-center mb-2">
|
||||
Herzlich willkommen bei sp-codes!
|
||||
Mein Name ist Samuel Philipp und ich bin ein Software Engineer aus Magdeburg.
|
||||
Auf dieser Seite finden Sie meine Profile auf GitHub, GitLab und Stackoverflow.
|
||||
Außerdem finden die verschiedene Möglichkeiten um mit mir in Kontakt zu treten.
|
||||
Ich freue mich auf Ihre Nachricht.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-center flex-wrap my-3">
|
||||
<div class="m-2"><a rel="me" href="https://social.tchncs.de/@samuel_p"><span
|
||||
class="fab fa-fw fa-4x fa-mastodon"></span></a></div>
|
||||
<div class="m-2"><a href="https://stackoverflow.com/users/9662601/samuel-p"><span
|
||||
class="fab fa-fw fa-4x fa-stack-overflow"></span></a></div>
|
||||
<div class="m-2"><a href="https://gitlab.com/samuel-p"><span
|
||||
class="fab fa-fw fa-4x fa-gitlab"></span></a></div>
|
||||
<div class="m-2"><a href="https://github.com/samuel-p"><span
|
||||
class="fab fa-fw fa-4x fa-github"></span></a></div>
|
||||
<div class="m-2"><a href="mailto:mail@sp-codes.de"><span
|
||||
class="fas fa-fw fa-4x fa-envelope"></span></a></div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-center mb-3">
|
||||
<div class="text-center">
|
||||
<a href="https://stackexchange.com/users/13389989/samuel-philipp"><img
|
||||
src="https://stackexchange.com/users/flair/13389989.png" width="208" height="58"
|
||||
alt="profile for Samuel Philipp on Stack Exchange, a network of free, community-driven Q&A sites"
|
||||
title="profile for Samuel Philipp on Stack Exchange, a network of free, community-driven Q&A sites"/></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-center mb-3">
|
||||
<div class="lead text-center">
|
||||
<a href="https://samuel-philipp.de">samuel-philipp.de</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex justify-content-end flex-wrap p-2 menu">
|
||||
<div class="mr-3"><span class="far fa-copyright mr-2"></span>Samuel Philipp</div>
|
||||
<div class="flex-grow-1"></div>
|
||||
<div><a href="imprint.html"><span
|
||||
class="fas fa-info-circle mr-2"></span>Impressum</a></div>
|
||||
<div class="ml-3"><a href="privacy.html"><span
|
||||
class="fas fa-user-secret mr-2"></span>Datenschutz</a></div>
|
||||
<div class="ml-3"><a target="_blank" href="https://git.sp-codes.de/samuel-p/sp-codes.de"><span
|
||||
class="fas fa-code mr-2"></span>Code</a></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
184
src/privacy.html
Normal file
|
@ -0,0 +1,184 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>sp-codes - Datenschutzerklärung</title>
|
||||
<link rel="shortcut icon" href="img/samuel.png">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<link rel="stylesheet" href="css/main.min.css">
|
||||
</head>
|
||||
<body class="legal">
|
||||
<h2>Datenschutzerklärung</h2>
|
||||
<h3 id="dsg-general-intro"></h3>
|
||||
<p>Diese Datenschutzerklärung klärt Sie über die Art, den Umfang und Zweck der Verarbeitung von personenbezogenen Daten
|
||||
(nachfolgend kurz „Daten“) im Rahmen der Erbringung unserer Leistungen sowie innerhalb unseres Onlineangebotes und
|
||||
der mit ihm verbundenen Webseiten, Funktionen und Inhalte sowie externen Onlinepräsenzen, wie z.B. unser Social
|
||||
Media Profile auf (nachfolgend gemeinsam bezeichnet als „Onlineangebot“). Im Hinblick auf die verwendeten
|
||||
Begrifflichkeiten, wie z.B. „Verarbeitung“ oder „Verantwortlicher“ verweisen wir auf die Definitionen im Art. 4 der
|
||||
Datenschutzgrundverordnung (DSGVO). <br>
|
||||
<br>
|
||||
</p>
|
||||
<h3 id="dsg-general-controller">Verantwortlicher</h3>
|
||||
<p><span class="tsmcontroller">Samuel Philipp<br>
|
||||
Otto-von-Guericke-Straße 40a<br>
|
||||
39104 Magdeburg, Deutschland<br>
|
||||
E-Mail: info@sp-codes.de<br>
|
||||
<h3 id="dsg-general-datatype">Arten der verarbeiteten Daten</h3>
|
||||
<p>- Bestandsdaten (z.B., Personen-Stammdaten, Namen oder Adressen).<br>
|
||||
- Kontaktdaten (z.B., E-Mail, Telefonnummern).<br>
|
||||
- Inhaltsdaten (z.B., Texteingaben, Fotografien, Videos).<br>
|
||||
- Nutzungsdaten (z.B., besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten).<br>
|
||||
- Meta-/Kommunikationsdaten (z.B., Geräte-Informationen, IP-Adressen).</p>
|
||||
<h3 id="dsg-general-datasubjects">Kategorien betroffener Personen</h3>
|
||||
<p>Besucher und Nutzer des Onlineangebotes (Nachfolgend bezeichnen wir die betroffenen Personen zusammenfassend auch als
|
||||
„Nutzer“).<br>
|
||||
</p>
|
||||
<h3 id="dsg-general-purpose">Zweck der Verarbeitung</h3>
|
||||
<p>- Zurverfügungstellung des Onlineangebotes, seiner Funktionen und Inhalte.<br>
|
||||
- Beantwortung von Kontaktanfragen und Kommunikation mit Nutzern.<br>
|
||||
- Sicherheitsmaßnahmen.<br>
|
||||
- Reichweitenmessung<br>
|
||||
<span class="tsmcom"></span></p>
|
||||
<h3 id="dsg-general-terms">Verwendete Begrifflichkeiten </h3>
|
||||
<p>„Personenbezogene Daten“ sind alle Informationen, die sich auf eine identifizierte oder identifizierbare natürliche
|
||||
Person (im Folgenden „betroffene Person“) beziehen; als identifizierbar wird eine natürliche Person angesehen, die
|
||||
direkt oder indirekt, insbesondere mittels Zuordnung zu einer Kennung wie einem Namen, zu einer Kennnummer, zu
|
||||
Standortdaten, zu einer Online-Kennung (z.B. Cookie) oder zu einem oder mehreren besonderen Merkmalen identifiziert
|
||||
werden kann, die Ausdruck der physischen, physiologischen, genetischen, psychischen, wirtschaftlichen, kulturellen
|
||||
oder sozialen Identität dieser natürlichen Person sind.<br>
|
||||
<br>
|
||||
„Verarbeitung“ ist jeder mit oder ohne Hilfe automatisierter Verfahren ausgeführte Vorgang oder jede solche
|
||||
Vorgangsreihe im Zusammenhang mit personenbezogenen Daten. Der Begriff reicht weit und umfasst praktisch jeden
|
||||
Umgang mit Daten.<br>
|
||||
<br>
|
||||
„Pseudonymisierung“ die Verarbeitung personenbezogener Daten in einer Weise, dass die personenbezogenen Daten ohne
|
||||
Hinzuziehung zusätzlicher Informationen nicht mehr einer spezifischen betroffenen Person zugeordnet werden können,
|
||||
sofern diese zusätzlichen Informationen gesondert aufbewahrt werden und technischen und organisatorischen Maßnahmen
|
||||
unterliegen, die gewährleisten, dass die personenbezogenen Daten nicht einer identifizierten oder identifizierbaren
|
||||
natürlichen Person zugewiesen werden.<br>
|
||||
<br>
|
||||
„Profiling“ jede Art der automatisierten Verarbeitung personenbezogener Daten, die darin besteht, dass diese
|
||||
personenbezogenen Daten verwendet werden, um bestimmte persönliche Aspekte, die sich auf eine natürliche Person
|
||||
beziehen, zu bewerten, insbesondere um Aspekte bezüglich Arbeitsleistung, wirtschaftliche Lage, Gesundheit,
|
||||
persönliche Vorlieben, Interessen, Zuverlässigkeit, Verhalten, Aufenthaltsort oder Ortswechsel dieser natürlichen
|
||||
Person zu analysieren oder vorherzusagen.<br>
|
||||
<br>
|
||||
Als „Verantwortlicher“ wird die natürliche oder juristische Person, Behörde, Einrichtung oder andere Stelle, die
|
||||
allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten
|
||||
entscheidet, bezeichnet.<br>
|
||||
<br>
|
||||
„Auftragsverarbeiter“ eine natürliche oder juristische Person, Behörde, Einrichtung oder andere Stelle, die
|
||||
personenbezogene Daten im Auftrag des Verantwortlichen verarbeitet.<br>
|
||||
</p>
|
||||
<h3 id="dsg-general-legalbasis">Maßgebliche Rechtsgrundlagen</h3>
|
||||
<p>Nach Maßgabe des Art. 13 DSGVO teilen wir Ihnen die Rechtsgrundlagen unserer Datenverarbeitungen mit. Für Nutzer aus
|
||||
dem Geltungsbereich der Datenschutzgrundverordnung (DSGVO), d.h. der EU und des EWG gilt, sofern die Rechtsgrundlage
|
||||
in der Datenschutzerklärung nicht genannt wird, Folgendes: <br>
|
||||
Die Rechtsgrundlage für die Einholung von Einwilligungen ist Art. 6 Abs. 1 lit. a und Art. 7 DSGVO;<br>
|
||||
Die Rechtsgrundlage für die Verarbeitung zur Erfüllung unserer Leistungen und Durchführung vertraglicher Maßnahmen
|
||||
sowie Beantwortung von Anfragen ist Art. 6 Abs. 1 lit. b DSGVO;<br>
|
||||
Die Rechtsgrundlage für die Verarbeitung zur Erfüllung unserer rechtlichen Verpflichtungen ist Art. 6 Abs. 1 lit. c
|
||||
DSGVO;<br>
|
||||
Für den Fall, dass lebenswichtige Interessen der betroffenen Person oder einer anderen natürlichen Person eine
|
||||
Verarbeitung personenbezogener Daten erforderlich machen, dient Art. 6 Abs. 1 lit. d DSGVO als Rechtsgrundlage.<br>
|
||||
Die Rechtsgrundlage für die erforderliche Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse
|
||||
liegt oder in Ausübung öffentlicher Gewalt erfolgt, die dem Verantwortlichen übertragen wurde ist Art. 6 Abs. 1 lit.
|
||||
e DSGVO. <br>
|
||||
Die Rechtsgrundlage für die Verarbeitung zur Wahrung unserer berechtigten Interessen ist Art. 6 Abs. 1 lit. f DSGVO.
|
||||
<br>
|
||||
Die Verarbeitung von Daten zu anderen Zwecken als denen, zu denen sie ehoben wurden, bestimmt sich nach den Vorgaben
|
||||
des Art 6 Abs. 4 DSGVO. <br>
|
||||
Die Verarbeitung von besonderen Kategorien von Daten (entsprechend Art. 9 Abs. 1 DSGVO) bestimmt sich nach den
|
||||
Vorgaben des Art. 9 Abs. 2 DSGVO. <br>
|
||||
</p>
|
||||
<h3 id="dsg-general-securitymeasures">Sicherheitsmaßnahmen</h3>
|
||||
<p>Wir treffen nach Maßgabe der gesetzlichen Vorgabenunter Berücksichtigung des Stands der Technik, der
|
||||
Implementierungskosten und der Art, des Umfangs, der Umstände und der Zwecke der Verarbeitung sowie der
|
||||
unterschiedlichen Eintrittswahrscheinlichkeit und Schwere des Risikos für die Rechte und Freiheiten natürlicher
|
||||
Personen, geeignete technische und organisatorische Maßnahmen, um ein dem Risiko angemessenes Schutzniveau zu
|
||||
gewährleisten.<br>
|
||||
<br>
|
||||
Zu den Maßnahmen gehören insbesondere die Sicherung der Vertraulichkeit, Integrität und Verfügbarkeit von Daten
|
||||
durch Kontrolle des physischen Zugangs zu den Daten, als auch des sie betreffenden Zugriffs, der Eingabe,
|
||||
Weitergabe, der Sicherung der Verfügbarkeit und ihrer Trennung. Des Weiteren haben wir Verfahren eingerichtet, die
|
||||
eine Wahrnehmung von Betroffenenrechten, Löschung von Daten und Reaktion auf Gefährdung der Daten gewährleisten.
|
||||
Ferner berücksichtigen wir den Schutz personenbezogener Daten bereits bei der Entwicklung, bzw. Auswahl von
|
||||
Hardware, Software sowie Verfahren, entsprechend dem Prinzip des Datenschutzes durch Technikgestaltung und durch
|
||||
datenschutzfreundliche Voreinstellungen.<br>
|
||||
</p>
|
||||
<h3 id="dsg-general-coprocessing">Zusammenarbeit mit Auftragsverarbeitern, gemeinsam Verantwortlichen und Dritten</h3>
|
||||
<p>Sofern wir im Rahmen unserer Verarbeitung Daten gegenüber anderen Personen und Unternehmen (Auftragsverarbeitern,
|
||||
gemeinsam Verantwortlichen oder Dritten) offenbaren, sie an diese übermitteln oder ihnen sonst Zugriff auf die Daten
|
||||
gewähren, erfolgt dies nur auf Grundlage einer gesetzlichen Erlaubnis (z.B. wenn eine Übermittlung der Daten an
|
||||
Dritte, wie an Zahlungsdienstleister, zur Vertragserfüllung erforderlich ist), Nutzer eingewilligt haben, eine
|
||||
rechtliche Verpflichtung dies vorsieht oder auf Grundlage unserer berechtigten Interessen (z.B. beim Einsatz von
|
||||
Beauftragten, Webhostern, etc.). <br>
|
||||
<br>
|
||||
Sofern wir Daten anderen Unternehmen unserer Unternehmensgruppe offenbaren, übermitteln oder ihnen sonst den Zugriff
|
||||
gewähren, erfolgt dies insbesondere zu administrativen Zwecken als berechtigtes Interesse und darüberhinausgehend
|
||||
auf einer den gesetzlichen Vorgaben entsprechenden Grundlage. <br>
|
||||
</p>
|
||||
<h3 id="dsg-general-rightssubject">Rechte der betroffenen Personen</h3>
|
||||
<p>Sie haben das Recht, eine Bestätigung darüber zu verlangen, ob betreffende Daten verarbeitet werden und auf Auskunft
|
||||
über diese Daten sowie auf weitere Informationen und Kopie der Daten entsprechend den gesetzlichen Vorgaben.<br>
|
||||
<br>
|
||||
Sie haben entsprechend. den gesetzlichen Vorgaben das Recht, die Vervollständigung der Sie betreffenden Daten oder
|
||||
die Berichtigung der Sie betreffenden unrichtigen Daten zu verlangen.<br>
|
||||
<br>
|
||||
Sie haben nach Maßgabe der gesetzlichen Vorgaben das Recht zu verlangen, dass betreffende Daten unverzüglich
|
||||
gelöscht werden, bzw. alternativ nach Maßgabe der gesetzlichen Vorgaben eine Einschränkung der Verarbeitung der
|
||||
Daten zu verlangen.<br>
|
||||
<br>
|
||||
Sie haben das Recht zu verlangen, dass die Sie betreffenden Daten, die Sie uns bereitgestellt haben nach Maßgabe der
|
||||
gesetzlichen Vorgaben zu erhalten und deren Übermittlung an andere Verantwortliche zu fordern. <br>
|
||||
<br>
|
||||
Sie haben ferner nach Maßgabe der gesetzlichen Vorgaben das Recht, eine Beschwerde bei der zuständigen
|
||||
Aufsichtsbehörde einzureichen.<br>
|
||||
</p>
|
||||
<h3 id="dsg-general-revokeconsent">Widerrufsrecht</h3>
|
||||
<p>Sie haben das Recht, erteilte Einwilligungen mit Wirkung für die Zukunft zu widerrufen.</p>
|
||||
<h3 id="dsg-general-object">Widerspruchsrecht</h3>
|
||||
<p><strong>Sie können der künftigen Verarbeitung der Sie betreffenden Daten nach Maßgabe der gesetzlichen Vorgaben
|
||||
jederzeit widersprechen. Der Widerspruch kann insbesondere gegen die Verarbeitung für Zwecke der Direktwerbung
|
||||
erfolgen.</strong></p>
|
||||
<h3 id="dsg-general-erasure">Löschung von Daten</h3>
|
||||
<p>Die von uns verarbeiteten Daten werden nach Maßgabe der gesetzlichen Vorgaben gelöscht oder in ihrer Verarbeitung
|
||||
eingeschränkt. Sofern nicht im Rahmen dieser Datenschutzerklärung ausdrücklich angegeben, werden die bei uns
|
||||
gespeicherten Daten gelöscht, sobald sie für ihre Zweckbestimmung nicht mehr erforderlich sind und der Löschung
|
||||
keine gesetzlichen Aufbewahrungspflichten entgegenstehen. <br>
|
||||
<br>
|
||||
Sofern die Daten nicht gelöscht werden, weil sie für andere und gesetzlich zulässige Zwecke erforderlich sind, wird
|
||||
deren Verarbeitung eingeschränkt. D.h. die Daten werden gesperrt und nicht für andere Zwecke verarbeitet. Das gilt
|
||||
z.B. für Daten, die aus handels- oder steuerrechtlichen Gründen aufbewahrt werden müssen.</p>
|
||||
<h3 id="dsg-general-changes">Änderungen und Aktualisierungen der Datenschutzerklärung</h3>
|
||||
<p>Wir bitten Sie sich regelmäßig über den Inhalt unserer Datenschutzerklärung zu informieren. Wir passen die
|
||||
Datenschutzerklärung an, sobald die Änderungen der von uns durchgeführten Datenverarbeitungen dies erforderlich
|
||||
machen. Wir informieren Sie, sobald durch die Änderungen eine Mitwirkungshandlung Ihrerseits (z.B. Einwilligung)
|
||||
oder eine sonstige individuelle Benachrichtigung erforderlich wird.</p>
|
||||
<p></p>
|
||||
<h3 id="dsg-contact">Kontaktaufnahme</h3>
|
||||
<p></p>
|
||||
<p><span class="ts-muster-content">Bei der Kontaktaufnahme mit uns (z.B. per Kontaktformular, E-Mail, Telefon oder via sozialer Medien) werden die Angaben des Nutzers zur Bearbeitung der Kontaktanfrage und deren Abwicklung gem. Art. 6 Abs. 1 lit. b. (im Rahmen vertraglicher-/vorvertraglicher Beziehungen), Art. 6 Abs. 1 lit. f. (andere Anfragen) DSGVO verarbeitet.. Die Angaben der Nutzer können in einem Customer-Relationship-Management System ("CRM System") oder vergleichbarer Anfragenorganisation gespeichert werden.<br>
|
||||
<br>
|
||||
Wir löschen die Anfragen, sofern diese nicht mehr erforderlich sind. Wir überprüfen die Erforderlichkeit alle zwei Jahre; Ferner gelten die gesetzlichen Archivierungspflichten.</span>
|
||||
</p>
|
||||
<p></p>
|
||||
<h3 id="dsg-hostingprovider">Hosting und E-Mail-Versand</h3>
|
||||
<p></p>
|
||||
<p><span class="ts-muster-content">Die von uns in Anspruch genommenen Hosting-Leistungen dienen der Zurverfügungstellung der folgenden Leistungen: Infrastruktur- und Plattformdienstleistungen, Rechenkapazität, Speicherplatz und Datenbankdienste, E-Mail-Versand, Sicherheitsleistungen sowie technische Wartungsleistungen, die wir zum Zwecke des Betriebs dieses Onlineangebotes einsetzen. <br>
|
||||
<br>
|
||||
Hierbei verarbeiten wir, bzw. unser Hostinganbieter Bestandsdaten, Kontaktdaten, Inhaltsdaten, Vertragsdaten, Nutzungsdaten, Meta- und Kommunikationsdaten von Kunden, Interessenten und Besuchern dieses Onlineangebotes auf Grundlage unserer berechtigten Interessen an einer effizienten und sicheren Zurverfügungstellung dieses Onlineangebotes gem. Art. 6 Abs. 1 lit. f DSGVO i.V.m. Art. 28 DSGVO (Abschluss Auftragsverarbeitungsvertrag).</span>
|
||||
</p>
|
||||
<p></p>
|
||||
<h3 id="dsg-logfiles">Erhebung von Zugriffsdaten und Logfiles</h3>
|
||||
<p></p>
|
||||
<p><span class="ts-muster-content">Wir, bzw. unser Hostinganbieter, erhebt auf Grundlage unserer berechtigten Interessen im Sinne des Art. 6 Abs. 1 lit. f. DSGVO Daten über jeden Zugriff auf den Server, auf dem sich dieser Dienst befindet (sogenannte Serverlogfiles). Zu den Zugriffsdaten gehören Name der abgerufenen Webseite, Datei, Datum und Uhrzeit des Abrufs, übertragene Datenmenge, Meldung über erfolgreichen Abruf, Browsertyp nebst Version, das Betriebssystem des Nutzers, Referrer URL (die zuvor besuchte Seite), IP-Adresse und der anfragende Provider.<br>
|
||||
<br>
|
||||
Logfile-Informationen werden aus Sicherheitsgründen (z.B. zur Aufklärung von Missbrauchs- oder Betrugshandlungen) für die Dauer von maximal 7 Tagen gespeichert und danach gelöscht. Daten, deren weitere Aufbewahrung zu Beweiszwecken erforderlich ist, sind bis zur endgültigen Klärung des jeweiligen Vorfalls von der Löschung ausgenommen.</span>
|
||||
</p>
|
||||
<p></p>
|
||||
<a href="https://datenschutz-generator.de" class="dsg1-6" rel="nofollow" target="_blank">Erstellt mit
|
||||
Datenschutz-Generator.de von RA Dr. Thomas Schwenke</a>
|
||||
</body>
|
||||
</html>
|
80
src/scss/main.scss
Normal file
|
@ -0,0 +1,80 @@
|
|||
@import "~bootstrap/scss/bootstrap-grid";
|
||||
@import "~bootstrap/scss/bootstrap-reboot";
|
||||
@import "~bootstrap/scss/utilities/align";
|
||||
@import "~bootstrap/scss/utilities/spacing";
|
||||
@import "~bootstrap/scss/utilities/display";
|
||||
@import "~bootstrap/scss/utilities/text";
|
||||
@import "~@fortawesome/fontawesome-free/scss/fontawesome";
|
||||
@import "~@fortawesome/fontawesome-free/scss/solid";
|
||||
@import "~@fortawesome/fontawesome-free/scss/brands";
|
||||
@import "~@fortawesome/fontawesome-free/scss/regular";
|
||||
|
||||
@font-face {
|
||||
font-family: 'Minotaur';
|
||||
src: local('Minotaur Phatte'), url(../font/minotaur.ttf) format('truetype');
|
||||
}
|
||||
|
||||
body {
|
||||
background-image: url("../img/bg.png");
|
||||
color: #fff;
|
||||
min-height: 100vh;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
|
||||
&.legal {
|
||||
padding: 2%;
|
||||
}
|
||||
}
|
||||
|
||||
.logo {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
max-width: 256px;
|
||||
max-height: 256px;
|
||||
background-color: #ffffff;
|
||||
border-radius: 50%;
|
||||
border: 2px solid #000000;
|
||||
}
|
||||
|
||||
.menu {
|
||||
border-top: 1px solid #ffffff;
|
||||
}
|
||||
|
||||
.border-top-bottom {
|
||||
border-top: 1px solid #ffffff;
|
||||
border-bottom: 1px solid #ffffff;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #dddddd;
|
||||
}
|
||||
|
||||
.sp-codes {
|
||||
font-family: "Minotaur", monospace;
|
||||
font-size: 5rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.row {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.flex-grow {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.sp-codes {
|
||||
font-size: 3rem;
|
||||
}
|
||||
.logo {
|
||||
max-width: 128px;
|
||||
max-height: 128px;
|
||||
}
|
||||
.fa-4x {
|
||||
font-size: 2em;
|
||||
}
|
||||
}
|