summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhorus2021-03-15 18:16:38 +0100
committerhorus2021-03-15 18:16:38 +0100
commitb34810cbff1c613290cf7d4282e242a58b1ddffb (patch)
treec6d7e1a5006d9f7fb8cb1289c02c1310be101f72
parentfb6c093495e346b9985c75f32878e12e54d946b3 (diff)
downloaduntrack-b34810cbff1c613290cf7d4282e242a58b1ddffb.tar.gz
Inline page in website
-rw-r--r--index.html195
-rw-r--r--public/css/prod.min.css6
-rw-r--r--public/img/paw-144.pngbin17742 -> 0 bytes
-rw-r--r--public/img/paw-512.pngbin140909 -> 0 bytes
-rw-r--r--public/img/paw-small.pngbin19354 -> 0 bytes
-rw-r--r--public/index.php210
-rw-r--r--public/manifest.json20
-rw-r--r--public/serviceworker.js62
-rw-r--r--resolve.php (renamed from public/resolve.php)6
9 files changed, 199 insertions, 300 deletions
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..22450db
--- /dev/null
+++ b/index.html
@@ -0,0 +1,195 @@
+{% extends "snippets/layout.html" %}
+
+{% block description "Löst gekürzte URLs auf und entfernt Tracking Parameter. Für weniger Überwachung." %}
+
+{% block title "Untrack - Entfernt Tracking Parameter aus der URL" %}
+
+{% block css %}
+ .main {
+ font-size: inherit !important;
+ }
+ .hidden {
+ display: none;
+ }
+ .alert {
+ margin-bottom: 0;
+ }
+ .copy {
+ margin-top: 0.1rem;
+ margin-bottom: 1rem;
+ padding-left: 1.25rem;
+ padding-right: 1.25rem;
+ }
+ form {
+ margin-top: 1rem;
+ }
+{% endblock %}
+
+{% block main %}
+<div class="container">
+
+ <div class="flavor-text">
+ <h1>
+ Untrack
+ </h1>
+ <em>Entfernt Tracking Parameter aus der URL</em>
+ </div>
+
+ <form id="form">
+ <div class="form-group">
+ <label for="url">Gib die URL ein</label>
+ <input id="url" class="form-control" type="text" placeholder="https://amzn.to/asdf123" value="{{ url }}" required>
+
+ </div>
+ <div class="form-group">
+ <div class="custom-control custom-checkbox">
+ <input type="checkbox" class="custom-control-input" id="unshort" checked>
+ <label class="custom-control-label" for="unshort" id="unshort-label">Erkenne gekürzte Links</label>
+ </div>
+ </div>
+
+ <div id="result" class="hidden" style="margin-bottom: 1rem;">
+ <div class="alert alert-info" id="result-field" style="margin-bottom: 0;">
+ <strong><span id="result-header">Ihre saubere URL lautet:<span></strong>
+ <br>
+ <span id="fill-result"></span><br>
+ </div>
+ <div class="copy">
+ <span id="copy-text">Klicke um die URL zu kopieren.</span>
+ </div>
+ </div>
+
+ <div class="form-group" id="submit-buttons">
+ <button class="btn btn-primary" type="submit">Untrack!</button>
+ </div>
+ </form>
+
+</div>
+
+ <script>
+ const trackingParams = [ 'utm_', 'mtm_', 'ref', 'tag', 'gclid', 'gclsrc', 'dclid', 'fbclid', 'zanpid'];
+
+ async function resolve(url) {
+ console.log("resolving: " + url);
+ const anfrage = {
+ url: encodeURI(url)
+ }
+ let response = await fetch('/resolve.php', { method: 'POST', body: JSON.stringify(anfrage) });
+
+ if (response.redirect) {
+ console.log("Redirect detected");
+ }
+
+ if ( response.ok ) {
+ let json = await response.json();
+
+ url = json.url;
+ } else {
+ console.log("Failed to fetch response");
+ fail();
+ }
+
+ console.log("returning url: " + url);
+ return url;
+ }
+
+ function untrack(_url) {
+ if ( ! _url.startsWith("http") ) {
+ _url = "http://" + _url;
+ }
+ let url = new URL( _url );
+
+ if ( url.host.match("(www|smile)\.amazon\.([a-zA-Z]+)") ) {
+ if ( url.href.includes('/ref=') ) {
+ url.href = url.href.toString().replace(/ref=(.+)/, '')
+ } else {
+ url.href = url.href.toString().replace(/\?(.+)/, '')
+ }
+ } else {
+ var searchParams = new URLSearchParams(url.searchParams.toString());
+
+ searchParams.forEach(function(value, key){
+ for ( i in trackingParams ) {
+ if (
+ ( trackingParams[i].includes('_') && key.startsWith(trackingParams[i]) )
+ ||
+ ( trackingParams[i] === key )
+ ) {
+ url.searchParams.delete(key);
+ }
+ }
+ });
+ }
+
+ return url.href.toString();
+ };
+
+ function printResult(url) {
+ document.getElementById('result').classList.remove('hidden');
+ document.getElementById('fill-result').innerHTML = url;
+ }
+ const resultheader = document.getElementById('result-header').innerHTML;
+
+ function fail() {
+ document.getElementById('result-field').classList.remove('alert-info');
+ document.getElementById('result-field').classList.add('alert-danger');
+ document.getElementById('result-header').innerHTML = "Zu viele Anfragen. URL wurde eventuell nicht aufgelöst. (nochmal probieren)";
+ }
+
+ function reset() {
+ document.getElementById('result-field').classList.add('alert-info');
+ document.getElementById('result-field').classList.remove('alert-danger');
+ document.getElementById('result-header').innerHTML = resultheader;
+ }
+
+ function copy(that){
+ var inp = document.createElement('input');
+ document.body.appendChild(inp)
+ inp.value = that;
+ inp.select();
+ document.execCommand('copy',false);
+ console.log("Copied: " + inp.value);
+ inp.remove();
+ document.getElementById('copy-text').innerHTML = "<em>In den Zwischenspeicher kopiert!</em>";
+ }
+ function offline(){
+ document.getElementById('unshort-label').innerHTML = "<em>Nicht verfügbar wenn Offline</em>";
+ document.getElementById('unshort').disabled = true;
+ }
+ function online(){
+ document.getElementById('unshort-label').innerHTML = "Erkenne gekürzte Links";
+ document.getElementById('unshort').disabled = false;
+ }
+
+ window.addEventListener("load",function() {
+ document.getElementById('form').addEventListener("submit", async (e) => {
+ e.preventDefault();
+ reset();
+ let url = document.getElementById('url').value
+
+ url = untrack (url);
+
+ if ( document.getElementById('unshort').checked ) {
+ url = await resolve(url);
+ url = untrack (url);
+ }
+
+ printResult(url);
+ });
+
+ document.getElementById('result').addEventListener("click", function(e){
+ copy(document.getElementById('fill-result').innerHTML);
+ });
+
+ if ( ! navigator.onLine ) {
+ offline();
+ }
+ });
+ window.addEventListener('online', () => {
+ online();
+ });
+ window.addEventListener('offline', () => {
+ offline();
+ });
+ </script>
+{% endblock %}
diff --git a/public/css/prod.min.css b/public/css/prod.min.css
deleted file mode 100644
index 4a674de..0000000
--- a/public/css/prod.min.css
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * Bootstrap v4.5.2 (https://getbootstrap.com/)
- * Copyright 2011-2020 The Bootstrap Authors
- * Copyright 2011-2020 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}main{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}strong{font-weight:bolder}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}img{vertical-align:middle;border-style:none}table{border-collapse:collapse}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button{text-transform:none}[role=button]{cursor:pointer}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}.container,.container-sm{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-sm{max-width:1140px}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link:focus{text-decoration:underline}.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-group{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group>.btn:hover{z-index:1}.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.form-control{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.form-control:focus{z-index:3}.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.form-control{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-link{font-weight:700}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217} .alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary .alert-link{color:#002752}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info .alert-link{color:#062c33}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-info{border-color:#17a2b8!important}.d-none{display:none!important}.d-table{display:table!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-table{display:table!important}}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.p-0{padding:0!important}.px-0{padding-right:0!important}.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.px-1{padding-right:.25rem!important}.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.px-2{padding-right:.5rem!important}.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.px-3{padding-right:1rem!important}.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.px-4{padding-right:1.5rem!important}.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.px-5{padding-right:3rem!important}.px-5{padding-left:3rem!important}@media (min-width:576px){.p-sm-0{padding:0!important}.px-sm-0{padding-right:0!important}.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.px-sm-1{padding-right:.25rem!important}.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.px-sm-2{padding-right:.5rem!important}.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.px-sm-3{padding-right:1rem!important}.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.px-sm-4{padding-right:1.5rem!important}.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-5{padding-right:3rem!important}.px-sm-5{padding-left:3rem!important}}.text-wrap{white-space:normal!important}.text-left{text-align:left!important}@media (min-width:576px){.text-sm-left{text-align:left!important}}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-body{color:#212529!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}}
diff --git a/public/img/paw-144.png b/public/img/paw-144.png
deleted file mode 100644
index 1a56dda..0000000
--- a/public/img/paw-144.png
+++ /dev/null
Binary files differ
diff --git a/public/img/paw-512.png b/public/img/paw-512.png
deleted file mode 100644
index d67292f..0000000
--- a/public/img/paw-512.png
+++ /dev/null
Binary files differ
diff --git a/public/img/paw-small.png b/public/img/paw-small.png
deleted file mode 100644
index 847da33..0000000
--- a/public/img/paw-small.png
+++ /dev/null
Binary files differ
diff --git a/public/index.php b/public/index.php
deleted file mode 100644
index 00ede01..0000000
--- a/public/index.php
+++ /dev/null
@@ -1,210 +0,0 @@
-<!doctype html>
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
- <meta name="description" content="Löst gekürzte URLs auf und entfernt Tracking Parameter. Für weniger Überwachung.">
- <link rel='icon' href="data:image/x-icon;base64,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">
- <link rel="manifest" href="/manifest.json">
- <title>Untrack - Entfernt Tracking Parameter aus der URL</title>
- <meta name="theme-color" content="#fd8a02">
- <style><?php readfile("css/prod.min.css"); ?></style>
- <style>
- html {
- width: 100%;
- }
- .main {
- margin-top: 8rem;
- }
- .hidden {
- display: none;
- }
- .alert {
- margin-bottom: 0;
- }
- .copy {
- margin-top: 0.1rem;
- margin-bottom: 1rem;
- padding-left: 1.25rem;
- padding-right: 1.25rem;
- }
- form {
- margin-top: 1rem;
- }
- </style>
-</head>
-
-<body>
-<div class="container main">
- <div class="row">
- <h1>
- <div class="col">Untrack -</div>
- <div class="col">Entfernt Tracking Parameter aus der URL</div>
- </h1>
- </div>
-
- <form id="form">
- <div class="form-group">
- <label for="url">Gib die URL ein</label>
- <input id="url" class="form-control" type="text" placeholder="https://amzn.to/asdf123" value="<?php printURL() ?>" required>
-
- </div>
- <div class="form-group">
- <div class="custom-control custom-checkbox">
- <input type="checkbox" class="custom-control-input" id="unshort" checked>
- <label class="custom-control-label" for="unshort" id="unshort-label">Erkenne gekürzte Links</label>
- </div>
- </div>
-
- <div id="result" class="hidden" style="margin-bottom: 1rem;">
- <div class="alert alert-info" id="result-field" style="margin-bottom: 0;">
- <strong><span id="result-header">Ihre saubere URL lautet:<span></strong>
- <br>
- <span id="fill-result"></span><br>
- </div>
- <div class="copy">
- <span id="copy-text">Klicke um die URL zu kopieren.</span>
- </div>
- </div>
-
- <div class="form-group" id="submit-buttons">
- <button class="btn btn-primary" type="submit">Untrack!</button>
- </div>
- </form>
-
-</div>
-
- <script>
- const trackingParams = [ 'utm_', 'mtm_', 'ref', 'tag', 'gclid', 'gclsrc', 'dclid', 'fbclid', 'zanpid'];
-
- async function resolve(url) {
- console.log("resolving: " + url);
- const anfrage = {
- url: encodeURI(url)
- }
- let response = await fetch('resolve.php', { method: 'POST', body: JSON.stringify(anfrage) });
-
- if (response.redirect) {
- console.log("Redirect detected");
- }
-
- if ( response.ok ) {
- let json = await response.json();
-
- url = json.url;
- } else {
- console.log("Failed to fetch response");
- fail();
- }
-
- console.log("returning url: " + url);
- return url;
- }
-
- function untrack(_url) {
- if ( ! _url.startsWith("http") ) {
- _url = "http://" + _url;
- }
- let url = new URL( _url );
-
- if ( url.host.match("(www|smile)\.amazon\.([a-zA-Z]+)") ) {
- if ( url.href.includes('/ref=') ) {
- url.href = url.href.toString().replace(/ref=(.+)/, '')
- } else {
- url.href = url.href.toString().replace(/\?(.+)/, '')
- }
- } else {
- var searchParams = new URLSearchParams(url.searchParams.toString());
-
- searchParams.forEach(function(value, key){
- for ( i in trackingParams ) {
- if (
- ( trackingParams[i].includes('_') && key.startsWith(trackingParams[i]) )
- ||
- ( trackingParams[i] === key )
- ) {
- url.searchParams.delete(key);
- }
- }
- });
- }
-
- return url.href.toString();
- };
-
- function printResult(url) {
- document.getElementById('result').classList.remove('hidden');
- document.getElementById('fill-result').innerHTML = url;
- }
- const resultheader = document.getElementById('result-header').innerHTML;
-
- function fail() {
- document.getElementById('result-field').classList.remove('alert-info');
- document.getElementById('result-field').classList.add('alert-danger');
- document.getElementById('result-header').innerHTML = "Zu viele Anfragen. URL wurde eventuell nicht aufgelöst. (nochmal probieren)";
- }
-
- function reset() {
- document.getElementById('result-field').classList.add('alert-info');
- document.getElementById('result-field').classList.remove('alert-danger');
- document.getElementById('result-header').innerHTML = resultheader;
- }
-
- function copy(that){
- var inp = document.createElement('input');
- document.body.appendChild(inp)
- inp.value = that;
- inp.select();
- document.execCommand('copy',false);
- console.log("Copied: " + inp.value);
- inp.remove();
- document.getElementById('copy-text').innerHTML = "<em>In den Zwischenspeicher kopiert!</em>";
- }
- function offline(){
- document.getElementById('unshort-label').innerHTML = "<em>Nicht verfügbar wenn Offline</em>";
- document.getElementById('unshort').disabled = true;
- }
- function online(){
- document.getElementById('unshort-label').innerHTML = "Erkenne gekürzte Links";
- document.getElementById('unshort').disabled = false;
- }
-
- window.addEventListener("load",function() {
- document.getElementById('form').addEventListener("submit", async (e) => {
- e.preventDefault();
- reset();
- let url = document.getElementById('url').value
-
- url = untrack (url);
-
- if ( document.getElementById('unshort').checked ) {
- url = await resolve(url);
- url = untrack (url);
- }
-
- printResult(url);
- });
-
- document.getElementById('result').addEventListener("click", function(e){
- copy(document.getElementById('fill-result').innerHTML);
- });
-
- if ( ! navigator.onLine ) {
- offline();
- }
- });
- window.addEventListener('online', () => {
- online();
- });
- window.addEventListener('offline', () => {
- offline();
- });
- </script>
-</body>
-</html>
-<?php
-function printURL() {
- if ( isset($_REQUEST['url']) ) {
- echo htmlspecialchars($_REQUEST['url']);
- }
-}
-?>
diff --git a/public/manifest.json b/public/manifest.json
deleted file mode 100644
index 80e2cf2..0000000
--- a/public/manifest.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Untrack",
- "short_name": "Untrack",
- "description": "Entfernt Tracking Parameter aus der URL",
- "icons": [{
- "src": "https://iamfabulous.de/favicon.ico"
- }, {
- "src": "/img/paw-144.png",
- "type": "image/png",
- "sizes": "144x144"
- }, {
- "src": "/img/paw-512.png",
- "type": "image/png",
- "sizes": "512x512"
- }],
- "start_url": ".",
- "display": "standalone",
- "background_color": "#171717",
- "theme_color": "#fd8a02"
-}
diff --git a/public/serviceworker.js b/public/serviceworker.js
deleted file mode 100644
index f765d1c..0000000
--- a/public/serviceworker.js
+++ /dev/null
@@ -1,62 +0,0 @@
-self.addEventListener('install', function(event){
- console.log('Install');
-});
-
-self.addEventListener('activate', function(event){
- console.log('Activate');
-});
-
-var cacheName = 'untrack-v1';
-var successResponses = /^0|([123]\d\d)|(40[14567])|410$/;
-
-function fetchAndCache(request){
- console.log('fetchAndCache', request.url);
- return fetch(request.clone()).then(function(response){
- console.log(request.method, request.url, response.status, response.type);
- if (request.method == 'GET' && response && successResponses.test(response.status) && response.type == 'basic'){
- console.log('Cache', request.url);
- caches.open(cacheName).then(function(cache){
- cache.put(request, response);
- });
- }
- return response.clone();
- });
-};
-
-function cacheOnly(request){
- console.log('cacheOnly', request.url);
- return caches.open(cacheName).then(function(cache){
- return cache.match(request);
- });
-};
-
-// Fastest strategy from https://github.com/GoogleChrome/sw-toolbox
-self.addEventListener('fetch', function(event){
- var request = event.request;
- var url = request.url;
- console.log('Fetch', url);
- event.respondWith(new Promise(function(resolve, reject){
- var rejected = false;
- var reasons = [];
-
- var maybeReject = function(reason){
- reasons.push(reason.toString());
- if (rejected){
- reject(new Error('Both cache and network failed: "' + reasons.join('", "') + '"'));
- } else {
- rejected = true;
- }
- };
-
- var maybeResolve = function(result){
- if (result instanceof Response){
- resolve(result);
- } else {
- maybeReject('No result returned');
- }
- };
-
- fetchAndCache(request.clone()).then(maybeResolve, maybeReject);
- cacheOnly(request).then(maybeResolve, maybeReject);
- }));
-});
diff --git a/public/resolve.php b/resolve.php
index 95b985c..47933ac 100644
--- a/public/resolve.php
+++ b/resolve.php
@@ -1,7 +1,7 @@
<?php
# rate limiting happens in nginx
-require_once __DIR__ . '/../vendor/autoload.php';
+require_once __DIR__ . '/vendor/autoload.php';
use GuzzleHttp\Client;
@@ -28,4 +28,6 @@ function getURL() {
}
}
-echo json_encode( ['url' => resolveURL( getURL() ) ]);
+function resolve() {
+ return json_encode( ['url' => resolveURL( getURL() ) ]);
+}