added etesync

This commit is contained in:
Alexander Szczepanski
2021-12-02 08:42:29 +01:00
parent 2bdb4244b3
commit 527b387c2e
23 changed files with 743 additions and 59 deletions

View File

@ -2,7 +2,10 @@
{ {
virtualisation = { virtualisation = {
docker.enable = true; docker = {
enable = true;
extraOptions = "--metrics-addr='127.0.0.1:9323' --experimental";
};
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [

View File

@ -1,6 +1,8 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
let let
secrets-desktop = import ../configs/secrets-desktop.nix;
secrets = import ../configs/secrets.nix; secrets = import ../configs/secrets.nix;
be = import ../configs/borg-exclude.nix;
in in
{ {
imports = imports =
@ -22,7 +24,21 @@ in
time.timeZone = "Europe/Berlin"; time.timeZone = "Europe/Berlin";
networking = { networking = {
useDHCP = false; useDHCP = false;
interfaces.ens3.useDHCP = true; # defaultGateway = {
# "address" = "gw.contabo.net";
# "interface" = "ens18";
# };
interfaces.ens18 = {
useDHCP = true;
# ipv4.addresses = [ {
# address = "207.180.220.97";
# prefixLength = 24;
# } ];
ipv6.addresses = [ {
address = "2a02:c207:3008:1547::1";
prefixLength = 64;
} ];
};
wireguard.interfaces = { wireguard.interfaces = {
wg0 = { wg0 = {
ips = [ "10.100.0.1/24" ]; ips = [ "10.100.0.1/24" ];
@ -49,12 +65,18 @@ in
nat = { nat = {
enable = true; enable = true;
externalInterface = "ens3"; externalInterface = "ens18";
internalInterfaces = [ "wg0" ]; internalInterfaces = [ "wg0" ];
}; };
firewall = { firewall = {
allowedTCPPorts = [ 80 443 22000 ]; allowedTCPPorts = [ 80 443 22000 ];
allowedUDPPorts = [ 80 443 51820 ]; allowedUDPPorts = [ 80 443 51820 ];
interfaces.wg0 = {
allowedTCPPorts = [ 61208 19999 ];
};
# extraCommands = ''
# iptables -A nixos-fw -p tcp --source 10.100.0.0/24 --dport 19999:19999 -j nixos-fw-accept
# '';
}; };
}; };
@ -62,66 +84,53 @@ in
security.acme.email = "webmaster@szczepan.ski"; security.acme.email = "webmaster@szczepan.ski";
security.acme.acceptTerms = true; security.acme.acceptTerms = true;
services.nginx = {
enable = true;
recommendedGzipSettings = true; services = {
recommendedOptimisation = true; fail2ban = {
recommendedProxySettings = true; enable = true;
recommendedTlsSettings = true;
clientMaxBodySize = "0";
virtualHosts = { jails.DEFAULT =
"szczepan.ski" = { ''
forceSSL = true; bantime = 7d
enableACME = true; '';
#root = "/var/www/myhost.org";
}; jails.sshd =
"nextcloud.szczepan.ski" = { ''
forceSSL = true; filter = sshd
enableACME = true; maxretry = 4
locations = { action = iptables[name=ssh, port=ssh, protocol=tcp]
"/" = { enabled = true
proxyPass = "http://127.0.0.1:8080/"; '';
extraConfig = '' };
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"; netdata.enable = true;
''; syncthing = {
}; user = "alex";
"/.well-known/carddav" = { group = "users";
return = "301 $scheme://$host/remote.php/dav"; enable = true;
}; dataDir = "/home/alex";
"/.well-known/caldav" = { configDir = "/home/alex/.config/syncthing";
return = "301 $scheme://$host/remote.php/dav";
};
};
};
"firefly.szczepan.ski" = {
forceSSL = true;
enableACME = true;
locations = {
"/" = {
proxyPass = "http://127.0.0.1:8081/";
};
};
};
}; };
};
services.fail2ban = { borgbackup.jobs.home = rec {
enable = true; compression = "auto,zstd";
encryption = {
jails.DEFAULT = mode = "repokey-blake2" ;
'' passphrase = secrets-desktop.borg-key;
bantime = 7d };
''; extraCreateArgs = "--list --stats --verbose --checkpoint-interval 600 --exclude-caches";
environment.BORG_RSH = "ssh -i /home/alex/.ssh/id_borg_rsa";
jails.sshd = paths = "/home/alex";
'' repo = "ssh://u278697-sub3@u278697.your-storagebox.de:23/./borg";
filter = sshd startAt = "daily";
maxretry = 4 # user = "alex";
action = iptables[name=ssh, port=ssh, protocol=tcp] prune.keep = {
enabled = true daily = 7;
''; weekly = 4;
monthly = 6;
};
extraPruneArgs = "--save-space --list --stats";
exclude = map (x: paths + "/" + x) be.borg-exclude;
};
}; };
# Limit stack size to reduce memory usage # Limit stack size to reduce memory usage

View File

@ -0,0 +1,29 @@
{
"files": {
"main.css": "/static/css/main.ca2ba8fe.chunk.css",
"main.js": "/static/js/main.2e48f2e6.chunk.js",
"main.js.map": "/static/js/main.2e48f2e6.chunk.js.map",
"runtime-main.js": "/static/js/runtime-main.c5260967.js",
"runtime-main.js.map": "/static/js/runtime-main.c5260967.js.map",
"static/css/2.f47d1c97.chunk.css": "/static/css/2.f47d1c97.chunk.css",
"static/js/2.b050421f.chunk.js": "/static/js/2.b050421f.chunk.js",
"static/js/2.b050421f.chunk.js.map": "/static/js/2.b050421f.chunk.js.map",
"index.html": "/index.html",
"precache-manifest.33245118e3055de4e18c08d249c92408.js": "/precache-manifest.33245118e3055de4e18c08d249c92408.js",
"service-worker.js": "/service-worker.js",
"static/css/2.f47d1c97.chunk.css.map": "/static/css/2.f47d1c97.chunk.css.map",
"static/css/main.ca2ba8fe.chunk.css.map": "/static/css/main.ca2ba8fe.chunk.css.map",
"static/js/2.b050421f.chunk.js.LICENSE.txt": "/static/js/2.b050421f.chunk.js.LICENSE.txt",
"static/media/logo.svg": "/static/media/logo.9725d5d6.svg",
"static/media/signed-pages-badge.svg": "/static/media/signed-pages-badge.d5eaa486.svg",
"static/media/wizard-create.svg": "/static/media/wizard-create.6036b172.svg",
"static/media/wizard-welcome.svg": "/static/media/wizard-welcome.585ebe1b.svg"
},
"entrypoints": [
"static/js/runtime-main.c5260967.js",
"static/css/2.f47d1c97.chunk.css",
"static/js/2.b050421f.chunk.js",
"static/css/main.ca2ba8fe.chunk.css",
"static/js/main.2e48f2e6.chunk.js"
]
}

BIN
web/etesync-web/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,14 @@
<!doctype html><!--!
-----BEGIN PGP SIGNATURE-----
iQEzBAABCAAdFiEEhc8DTa2Rr/S5e0yW8FqxMwOHljYFAmFtfVQACgkQ8FqxMwOH
ljbPFAgApWJrl8hK4TRbwEmRYYAc2YwErsnq9d+HYulnJWKaSxRkzlHJBHgojZp5
t8HV0d4oHCPi/LMxZH/bon8g82rAweQMJBwZglKWi+xJOxpk/O5D3u2cLqdcwuKB
0F8g7ysESthQYAnAjuivG8C9HqrlfzGulWA9Q7oEsiS4xDf8FOhrkWqJIJrn6Hm1
euY4sTJ3Ive6bWPiLUpYB+ewOHkoC+s57M8RnXz5E3k9C5zVXNqMWKnblhRCZmaX
APbXWOljcl+ZBR6WPyR3rW/n7VG32l2Gkwwm/vOG9JVQjiiFkn687WK5gWasfVOh
RsOYGI3LKBN0UoBgeNBHYmpcAG6aLg==
=qelj
-----END PGP SIGNATURE-----
--><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name="theme-color" content="#ffc107"><meta name="google" content="notranslate"><meta name="referrer" content="no-referrer"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-title" content="EteSync"><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"><link rel="manifest" href="/manifest.json"><link rel="shortcut icon" href="/favicon.ico"><link rel="apple-touch-icon" size="192x192" href="/favicon.ico"><title>EteSync - Secure Data Sync</title><link href="/static/css/2.f47d1c97.chunk.css" rel="stylesheet"><link href="/static/css/main.ca2ba8fe.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script src="/static/js/runtime-main.c5260967.js"></script><script src="/static/js/2.b050421f.chunk.js"></script><script src="/static/js/main.2e48f2e6.chunk.js"></script></body></html>

View File

@ -0,0 +1,47 @@
{
"short_name": "EteSync",
"name": "EteSync - Secure Data Sync",
"description": "Secure, end-to-end encrypted, and privacy respecting sync for your contacts, calendars, tasks, and notes.",
"icons": [
{
"src": "favicon.ico",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
}
],
"start_url": "https://etesync.szczepan.ski",
"display": "standalone",
"theme_color": "#ffc107",
"background_color": "#03a9f4",
"categories": [
"productivity",
"utilities"
],
"related_applications": [
{
"platform": "play",
"url": "https://play.google.com/store/apps/details?id=com.etesync.syncadapter",
"id": "com.etesync.syncadapter"
}, {
"platform": "itunes",
"url": "https://apps.apple.com/us/app/apple-store/id1489574285"
}, {
"platform": "f-droid",
"url": "https://f-droid.org/packages/com.etesync.syncadapter/",
"id": "com.etesync.syncadapter"
}
],
"shortcuts": [
{
"name": "Calendar",
"url": "/pim/events"
}, {
"name": "Tasks",
"url": "/pim/tasks"
}, {
"name": "Address Book",
"url": "/pim/contacts"
}
]
}

View File

@ -0,0 +1,46 @@
self.__precacheManifest = (self.__precacheManifest || []).concat([
{
"revision": "09ee07daed9cd8b5fa0d7164a58c489f",
"url": "/index.html"
},
{
"revision": "fdc4ed909b0f4b12c3d4",
"url": "/static/css/2.f47d1c97.chunk.css"
},
{
"revision": "04e912530597adb14b1e",
"url": "/static/css/main.ca2ba8fe.chunk.css"
},
{
"revision": "fdc4ed909b0f4b12c3d4",
"url": "/static/js/2.b050421f.chunk.js"
},
{
"revision": "daa65455b7c2adc7958062bd6f25773a",
"url": "/static/js/2.b050421f.chunk.js.LICENSE.txt"
},
{
"revision": "04e912530597adb14b1e",
"url": "/static/js/main.2e48f2e6.chunk.js"
},
{
"revision": "a5c11966053d38bccf95",
"url": "/static/js/runtime-main.c5260967.js"
},
{
"revision": "9725d5d60ec692cb0d794049c4600aea",
"url": "/static/media/logo.9725d5d6.svg"
},
{
"revision": "d5eaa4864dd8f5932718291b2f2a7bba",
"url": "/static/media/signed-pages-badge.d5eaa486.svg"
},
{
"revision": "6036b17251bfa5ffc093899dc2b12dcf",
"url": "/static/media/wizard-create.6036b172.svg"
},
{
"revision": "585ebe1bf222e14ef9755049b29dbc47",
"url": "/static/media/wizard-welcome.585ebe1b.svg"
}
]);

View File

@ -0,0 +1,39 @@
/**
* Welcome to your Workbox-powered service worker!
*
* You'll need to register this file in your web app and you should
* disable HTTP caching for this file too.
* See https://goo.gl/nhQhGp
*
* The rest of the code is auto-generated. Please don't update this file
* directly; instead, make changes to your Workbox build configuration
* and re-run your build process.
* See https://goo.gl/2aRDsh
*/
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
importScripts(
"/precache-manifest.33245118e3055de4e18c08d249c92408.js"
);
self.addEventListener('message', (event) => {
if (event.data && event.data.type === 'SKIP_WAITING') {
self.skipWaiting();
}
});
workbox.core.clientsClaim();
/**
* The workboxSW.precacheAndRoute() method efficiently caches and responds to
* requests for URLs in the manifest.
* See https://goo.gl/S9QRab
*/
self.__precacheManifest = [].concat(self.__precacheManifest || []);
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
workbox.routing.registerNavigationRoute(workbox.precaching.getCacheKeyForURL("/index.html"), {
blacklist: [/^\/_/,/\/[^/?]+\.[^/]+$/],
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
.App{text-align:center}.App-logo{-webkit-animation:App-logo-spin 20s linear infinite;animation:App-logo-spin 20s linear infinite;height:80px}.App-header{background-color:#222;height:150px;padding:20px;color:#fff}.App-intro{font-size:large}.App-drawer-header{background-color:#555;padding:10px}.App-drawer-logo{width:60px;margin-bottom:10px}.withSpin-spin{-webkit-animation:withSpin-spin 2s linear infinite;animation:withSpin-spin 2s linear infinite}@-webkit-keyframes withSpin-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes withSpin-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.Container{margin-right:auto;margin-left:auto}@media (min-width:768px){.Container{padding-top:40px;padding-bottom:40px;width:750px}}@media (min-width:992px){.Container{width:970px}}@media (min-width:1200px){.Container{width:1170px}}.Container-inner{padding:15px}@media (max-width:767px){.rbc-toolbar{flex-direction:column}.rbc-toolbar-label{margin:10px 0}}body,html{height:100%}body{margin:0;padding:0;font-family:sans-serif;background-color:#ffc107;overscroll-behavior-y:contain}body:before{content:"";position:absolute;height:100%;width:100%;z-index:-1}#root,body:before{background-color:#fff}#root{min-height:100%;background-color:#f0f0f0;display:flex;flex-direction:column}a{color:#00b0ff}
/*# sourceMappingURL=main.ca2ba8fe.chunk.css.map */

View File

@ -0,0 +1 @@
{"version":3,"sources":["App.css","withSpin.css","Container.css","Calendar.css","index.css"],"names":[],"mappings":"AAAA,KACE,iBACF,CAEA,UACE,mDAA4C,CAA5C,2CAA4C,CAC5C,WACF,CAEA,YACE,qBAAsB,CACtB,YAAa,CACb,YAAa,CACb,UACF,CAEA,WACE,eACF,CAEA,mBACE,qBAAsB,CACtB,YACF,CAEA,iBACE,UAAW,CACX,kBACF,CC5BA,eACE,kDAA2C,CAA3C,0CACF,CAEA,iCACE,GAEE,sBACF,CACA,GAEE,wBACF,CACF,CATA,yBACE,GAEE,sBACF,CACA,GAEE,wBACF,CACF,CCbA,WACE,iBAAkB,CAClB,gBACF,CACA,yBACE,WACE,gBAAiB,CACjB,mBAAoB,CACpB,WACF,CACF,CACA,yBACE,WACE,WACF,CACF,CACA,0BACE,WACE,YACF,CACF,CAEA,iBACE,YACF,CCvBA,yBACE,aACE,qBACF,CACA,mBACE,aACF,CACF,CCRA,UAEI,WACJ,CAEA,KACE,QAAS,CACT,SAAU,CACV,sBAAuB,CACvB,wBAAyB,CAGzB,6BACF,CAEA,YACE,UAAW,CACX,iBAAkB,CAClB,WAAY,CACZ,UAAW,CACX,UAEF,CAEA,kBAHE,qBAUF,CAPA,MAGE,eAAgB,CAChB,wBAAyB,CACzB,YAAa,CACb,qBACF,CAEA,EACE,aACF","file":"main.ca2ba8fe.chunk.css","sourcesContent":[".App {\n text-align: center;\n}\n\n.App-logo {\n animation: App-logo-spin infinite 20s linear;\n height: 80px;\n}\n\n.App-header {\n background-color: #222;\n height: 150px;\n padding: 20px;\n color: white;\n}\n\n.App-intro {\n font-size: large;\n}\n\n.App-drawer-header {\n background-color: #555;\n padding: 10px;\n}\n\n.App-drawer-logo {\n width: 60px;\n margin-bottom: 10px;\n}\n",".withSpin-spin {\n animation: withSpin-spin 2s infinite linear;\n}\n\n@keyframes withSpin-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n\n",".Container {\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 768px) {\n .Container {\n padding-top: 40px;\n padding-bottom: 40px;\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .Container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .Container {\n width: 1170px;\n }\n}\n\n.Container-inner {\n padding: 15px;\n}\n","/* Hack the layout on mobile. */\n@media (max-width: 767px) {\n .rbc-toolbar {\n flex-direction: column;\n }\n .rbc-toolbar-label {\n margin: 10px 0;\n }\n}\n","html,\nbody {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: sans-serif;\n background-color: #ffc107;\n\n /* Chrome only at the moment, disable pull to refresh in PWA */\n overscroll-behavior-y: contain;\n}\n\nbody:before {\n content: '';\n position: absolute;\n height: 100%;\n width: 100%;\n z-index: -1;\n background-color: white;\n}\n\n#root {\n background-color: white;\n\n min-height: 100%;\n background-color: #f0f0f0;\n display: flex;\n flex-direction: column;\n}\n\na {\n color: #00b0ff;\n}\n"]}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,106 @@
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <http://feross.org>
* @license MIT
*/
/**
* A better abstraction over CSS.
*
* @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present
* @website https://github.com/cssinjs/jss
* @license MIT
*/
/** @license React v0.19.1
* scheduler.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v16.13.1
* react-dom.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v16.13.1
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v16.13.1
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**!
* @fileOverview Kickass library to create and place poppers near their reference elements.
* @version 1.16.1
* @license
* Copyright (c) 2016 Federico Zivolo and contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/**!
* @fileOverview Kickass library to create and place poppers near their reference elements.
* @version 1.16.1-lts
* @license
* Copyright (c) 2016 Federico Zivolo and contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
!function(e){function t(t){for(var n,l,f=t[0],i=t[1],a=t[2],p=0,s=[];p<f.length;p++)l=f[p],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(c&&c(t);s.length;)s.shift()();return u.push.apply(u,a||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,f=1;f<r.length;f++){var i=r[f];0!==o[i]&&(n=!1)}n&&(u.splice(t--,1),e=l(l.s=r[0]))}return e}var n={},o={1:0},u=[];function l(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.m=e,l.c=n,l.d=function(e,t,r){l.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,t){if(1&t&&(e=l(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(l.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)l.d(r,n,function(t){return e[t]}.bind(null,n));return r},l.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(t,"a",t),t},l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.p="/";var f=this["webpackJsonpetesync-web"]=this["webpackJsonpetesync-web"]||[],i=f.push.bind(f);f.push=t,f=f.slice();for(var a=0;a<f.length;a++)t(f[a]);var c=i;r()}([]);
//# sourceMappingURL=runtime-main.c5260967.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,162 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="192"
viewBox="0 0 192 192"
width="192"
version="1.1"
id="svg3688"
sodipodi:docname="logo.svg"
inkscape:version="0.92.1 r"
inkscape:export-filename="/home/tom/projects/securesync/graphics/logo.png"
inkscape:export-xdpi="256"
inkscape:export-ydpi="256"
style="fill:#000000">
<metadata
id="metadata3694">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3692">
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4498">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4488" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4490" />
<feGaussianBlur
in="composite1"
stdDeviation="4"
result="blur"
id="feGaussianBlur4492" />
<feOffset
dx="0"
dy="4"
result="offset"
id="feOffset4494" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4496" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter4510">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood4500" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite4502" />
<feGaussianBlur
in="composite1"
stdDeviation="4"
result="blur"
id="feGaussianBlur4504" />
<feOffset
dx="0"
dy="4"
result="offset"
id="feOffset4506" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite4508" />
</filter>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="3832"
inkscape:window-height="2095"
id="namedview3690"
showgrid="false"
inkscape:zoom="4"
inkscape:cx="21.145622"
inkscape:cy="121.84403"
inkscape:window-x="0"
inkscape:window-y="61"
inkscape:window-maximized="0"
inkscape:current-layer="svg3688" />
<path
d="M 0,-2 H 192 V 190 H 0 Z"
id="path3684"
inkscape:connector-curvature="0"
style="fill:none;stroke-width:8" />
<path
d="M 160,67.52 V 30 H 122.48 L 96,3.52 69.52,30 H 32 V 67.52 L 5.52,94 32,120.48 V 158 H 69.52 L 96,184.48 122.48,158 H 160 V 120.48 L 186.48,94 Z"
id="path3686"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccc"
style="fill:#ffc107;fill-opacity:1;stroke-width:8;filter:url(#filter4498)" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="circle"
style="display:inline"
transform="translate(0,168)">
<ellipse
style="fill:#ffd740;fill-opacity:1;fill-rule:nonzero;stroke:#ffd740;stroke-width:60.96912003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path5101"
cx="96.040611"
cy="-74.043999"
rx="16.102007"
ry="16.103439" />
</g>
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="arrow"
style="display:inline"
transform="translate(0,168)">
<path
inkscape:connector-curvature="0"
d="M 96,-120.53035 V -137.9802 L 72.705129,-114.71374 96,-91.447272 v -17.449848 c 19.2765,0 34.94231,15.646698 34.94231,34.899704 0,5.874792 -1.45593,11.458728 -4.0766,16.28652 l 8.50263,8.492256 c 4.5425,-7.154432 7.2214,-15.646688 7.2214,-24.778776 0,-25.709454 -20.8489,-46.532934 -46.58974,-46.532934 z m 0,81.43263 c -19.276507,0 -34.942311,-15.646696 -34.942311,-34.899696 0,-5.874784 1.455934,-11.458744 4.076602,-16.286532 l -8.502618,-8.492262 c -4.542509,7.15444 -7.221415,15.646698 -7.221415,24.778794 0,25.709448 20.848909,46.532928 46.589742,46.532928 v 17.449856 L 119.29487,-33.281104 96,-56.547568 Z"
id="path2"
style="fill:#448aff;fill-opacity:1;stroke-width:5.82016563;filter:url(#filter4510)" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke-width:8"
d="M 0,-170 H 192 V 22 H 0 Z"
id="path4" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
viewBox="0 0 220 58"
xml:space="preserve"
sodipodi:docname="badge.svg"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
inkscape:export-filename="/tmp/badge.png"
inkscape:export-xdpi="99.309998"
inkscape:export-ydpi="99.309998"
width="220"
height="58"><metadata
id="metadata1502"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs1500" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="3832"
inkscape:window-height="2088"
id="namedview1498"
showgrid="false"
inkscape:zoom="2.0344828"
inkscape:cx="16.03199"
inkscape:cy="64.841524"
inkscape:window-x="0"
inkscape:window-y="68"
inkscape:window-maximized="0"
inkscape:current-layer="Capa_1" /><path
style="fill:#2aa924;fill-opacity:1"
d="M 29,0 C 29,0 22.333,8 7,8 V 27.085 C 7,37.051 11.328,46.662 19.164,52.82 21.937,55 25.208,56.875 29,58 32.792,56.875 36.062,55 38.836,52.82 46.672,46.662 51,37.051 51,27.085 V 8 C 35.667,8 29,0 29,0 Z"
id="path1463"
inkscape:connector-curvature="0" /><path
style="fill:#26e61c;fill-opacity:1"
d="M 29,51.661 C 26.877,50.828 24.822,49.636 22.872,48.103 16.69,43.245 13,35.388 13,27.085 V 13.628 C 20.391,12.685 25.639,10.114 29,7.83 Z"
id="path1465"
inkscape:connector-curvature="0" /><g
id="g1467" /><g
id="g1469" /><g
id="g1471" /><g
id="g1473" /><g
id="g1475" /><g
id="g1477" /><g
id="g1479" /><g
id="g1481" /><g
id="g1483" /><g
id="g1485" /><g
id="g1487" /><g
id="g1489" /><g
id="g1491" /><g
id="g1493" /><g
id="g1495" /><g
transform="matrix(0.06459484,0,0,0.06271697,15.219767,15.620369)"
id="g2152"><g
id="g2150"><g
id="g2148"><path
inkscape:connector-curvature="0"
d="m 133.529,352.213 c -12.907,-23.147 -19.733,-51.52 -19.733,-82.24 0,-51.627 44.693,-93.653 99.52,-93.653 54.933,0 99.52,42.027 99.52,93.653 0,5.867 4.8,10.667 10.667,10.667 5.867,0 10.667,-4.8 10.667,-10.667 0,-63.467 -54.187,-114.987 -120.853,-114.987 -66.666,0 -120.855,51.627 -120.855,114.987 0,34.347 7.787,66.453 22.507,92.693 14.4,25.707 24.427,37.547 42.88,56.213 2.133,2.133 4.8,3.2 7.573,3.2 2.667,0 5.44,-0.96 7.36,-3.2 4.267,-4.053 4.267,-10.88 0.107,-15.04 -16.427,-16.532 -25.6,-27.092 -39.36,-51.626 z"
id="path2138" /><path
inkscape:connector-curvature="0"
d="m 94.702,51.413 c 36.587,-19.947 76.48,-30.08 118.827,-30.08 42.453,0 77.973,9.067 118.827,30.187 1.6,0.747 3.2,1.173 4.907,1.173 v 0 c 3.84,0 7.573,-2.133 9.493,-5.76 2.667,-5.227 0.64,-11.733 -4.587,-14.4 C 298.649,10.027 258.969,0 213.529,0 167.662,0 124.249,10.987 84.462,32.64 c -5.227,2.88 -7.04,9.28 -4.267,14.507 2.88,5.226 9.28,7.04 14.507,4.266 z"
id="path2140" /><path
inkscape:connector-curvature="0"
d="m 212.569,103.04 c -68.8,0 -131.733,38.507 -160.213,98.027 -9.707,20.16 -14.613,43.413 -14.613,69.013 0,28.8 5.12,56.32 15.573,84.373 2.133,5.547 8.213,8.32 13.76,6.293 5.547,-2.133 8.32,-8.213 6.293,-13.76 C 60.675,312.96 59.182,286.72 59.182,270.08 c 0,-22.4 4.16,-42.56 12.48,-59.84 24.96,-52.267 80.32,-85.973 141.013,-85.973 85.227,0 154.56,65.387 154.56,145.813 0,22.933 -19.947,41.493 -44.373,41.493 -24.426,0 -44.373,-18.667 -44.373,-41.493 0,-34.667 -29.44,-62.827 -65.707,-62.827 -36.267,0 -65.707,28.16 -65.707,62.827 0,42.133 16.427,81.707 46.187,111.36 23.04,22.933 45.227,35.52 79.253,44.8 0.853,0.32 1.813,0.427 2.773,0.427 4.693,0 8.96,-3.093 10.24,-7.787 1.6,-5.653 -1.813,-11.52 -7.467,-13.12 -30.08,-8.213 -49.707,-19.307 -69.867,-39.36 -25.707,-25.6 -39.893,-59.84 -39.893,-96.213 0,-22.933 19.947,-41.493 44.373,-41.493 24.426,0 44.373,18.667 44.373,41.493 0,34.667 29.547,62.827 65.707,62.827 36.16,0 65.707,-28.16 65.707,-62.827 10e-4,-92.16 -78.932,-167.147 -175.892,-167.147 z"
id="path2142" /><path
inkscape:connector-curvature="0"
d="m 403.395,147.2 c -21.227,-29.653 -48.107,-52.907 -80,-69.333 -67.2,-34.56 -152.96,-34.453 -220.053,0.213 -32,16.533 -58.987,40 -80.107,69.867 -3.413,4.8 -2.24,11.413 2.56,14.827 1.92,1.28 4.053,1.92 6.187,1.92 3.307,0 6.613,-1.493 8.747,-4.373 19.093,-27.093 43.52,-48.32 72.427,-63.253 61.12,-31.573 139.307,-31.68 200.533,-0.213 28.8,14.72 53.12,35.84 72.32,62.72 3.413,4.8 10.133,5.867 14.933,2.453 4.8,-3.415 5.867,-10.028 2.453,-14.828 z"
id="path2144" /><path
inkscape:connector-curvature="0"
d="m 340.569,359.253 c -8.533,1.493 -17.173,2.027 -22.293,2.027 -21.333,0 -39.04,-5.013 -54.08,-15.253 -25.92,-17.6 -41.387,-45.973 -41.387,-75.947 0,-5.867 -4.8,-10.667 -10.667,-10.667 -5.867,0 -10.667,4.8 -10.667,10.667 0,37.12 18.987,72.107 50.667,93.653 18.453,12.48 40.747,18.88 66.133,18.88 2.987,0 13.547,-0.107 26.027,-2.347 5.76,-1.067 9.707,-6.613 8.64,-12.373 -1.067,-5.76 -6.613,-9.706 -12.373,-8.64 z"
id="path2146" /></g></g></g><flowRoot
xml:space="preserve"
id="flowRoot836"
style="font-style:normal;font-weight:normal;font-size:1.25px;line-height:25px;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
id="flowRegion838"><rect
id="rect840"
width="181.6006"
height="31.801828"
x="60.475609"
y="0.47866088" /></flowRegion><flowPara
id="flowPara842" /></flowRoot><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:1.25px;line-height:25px;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="182.81706"
y="19.942076"
id="text846"><tspan
sodipodi:role="line"
id="tspan844"
x="182.81706"
y="32.766785" /></text>
<flowRoot
xml:space="preserve"
id="flowRoot848"
style="font-style:normal;font-weight:normal;font-size:1.25px;line-height:25px;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
id="flowRegion850"><rect
id="rect852"
width="160.92073"
height="37.362804"
x="61.69207"
y="1.1737828" /></flowRegion><flowPara
id="flowPara854" /></flowRoot><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:1.25px;line-height:25px;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="60.067513"
y="46.389381"
id="text882"><tspan
sodipodi:role="line"
x="60.067513"
y="46.389381"
id="tspan880"><tspan
x="60.067513"
y="46.389381"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:24px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;writing-mode:lr-tb;text-anchor:start"
id="tspan878">Signed Pages</tspan></tspan></text>
<flowRoot
xml:space="preserve"
id="flowRoot864"
style="font-style:normal;font-weight:normal;font-size:1.25px;line-height:25px;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
id="flowRegion866"><rect
id="rect868"
width="128.94511"
height="13.902438"
x="60.301826"
y="6.2134166" /></flowRegion><flowPara
id="flowPara870">Page s</flowPara></flowRoot><flowRoot
xml:space="preserve"
id="flowRoot872"
style="font-style:normal;font-weight:normal;font-size:1.25px;line-height:25px;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
id="flowRegion874"><rect
id="rect876"
width="125.81707"
height="12.685975"
x="60.649387"
y="7.4298801" /></flowRegion><flowPara
id="flowPara878">Page</flowPara></flowRoot><flowRoot
xml:space="preserve"
id="flowRoot880"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:1.25px;line-height:25px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
id="flowRegion882"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Open Sans';-inkscape-font-specification:'Open Sans'"><rect
id="rect884"
width="124.07926"
height="13.033536"
x="60.475609"
y="7.9512215"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Open Sans';-inkscape-font-specification:'Open Sans'" /></flowRegion><flowPara
id="flowPara886">uoeuoeuoeuaeueoaueaouaeouoaeuaoeu</flowPara></flowRoot><flowRoot
xml:space="preserve"
id="flowRoot856-9"
style="font-style:normal;font-weight:normal;font-size:1.25px;line-height:25px;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(-2.5362099,0.85067833)"><flowRegion
id="flowRegion858-3"><rect
id="rect860-7"
width="190.11584"
height="35.277439"
x="60.82317"
y="-0.3902415" /></flowRegion><flowPara
id="flowPara862-4"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:24px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRoot><flowRoot
xml:space="preserve"
id="flowRoot912"
style="font-style:normal;font-weight:normal;font-size:1.25px;line-height:25px;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
id="flowRegion914"><rect
id="rect916"
width="88.106705"
height="77.158531"
x="-73.335365"
y="-110.39329" /></flowRegion><flowPara
id="flowPara918" /></flowRoot><flowRoot
xml:space="preserve"
id="flowRoot920"
style="font-style:normal;font-weight:normal;font-size:1.25px;line-height:25px;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
id="flowRegion922"><rect
id="rect924"
width="148.40852"
height="10.253048"
x="61.865852"
y="42.8811" /></flowRegion><flowPara
id="flowPara926">Ver</flowPara></flowRoot><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:1.25px;line-height:25px;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="60.449413"
y="19.314518"
id="text888"><tspan
sodipodi:role="line"
x="60.449413"
y="19.314518"
id="tspan886"><tspan
x="60.449413"
y="19.314518"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.33333302px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start"
id="tspan884">PGP Signed With</tspan></tspan></text>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 49 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 40 KiB