@@ -72,7 +72,16 @@ | |||||
</div> | </div> | ||||
include "includes/download-btn.html" | |||||
<div> | |||||
<a href="#" id="copy-link-btn" class="btn-cta btn">copy link</a> | |||||
<a href="{{.Url}}" class="btn-cta btn"> download</i> </a> | |||||
<div id="copy-link-wrapper" class="copy-link-wrapper"> | |||||
<p>Press Ctrl / CMD + C to copy link to your clipboard.</p> | |||||
<input readonly="readonly" type="text" value="{{.Url}}" /> | |||||
</div> | |||||
<div id="overlay" class="overlay"></div> | |||||
</div> | |||||
<script src="scripts/clipboard.js"></script> | |||||
</section> | </section> | ||||
@@ -109,7 +118,15 @@ | |||||
ga('send', 'pageview'); | ga('send', 'pageview'); | ||||
</script> | </script> | ||||
include "includes/js.html" | |||||
<!-- build:js scripts/main.js --> | |||||
<script src="bower_components/jquery/dist/jquery.js"></script> | |||||
<script src="bower_components/uri.js/src/URI.min.js"></script> | |||||
<script src="bower_components/bootstrap/js/transition.js"></script> | |||||
<script src="bower_components/bootstrap/js/collapse.js"></script> | |||||
<script src="scripts/showdown.js"></script> | |||||
<script src="scripts/main.js"></script> | |||||
<!-- endbuild --> | |||||
<script> | <script> | ||||
var text = "# Markdown *works*."; | var text = "# Markdown *works*."; | ||||
@@ -8,43 +8,60 @@ | |||||
include "includes/head.html" | include "includes/head.html" | ||||
<body id="download"> | |||||
<body id="download"> | |||||
<script> | <script> | ||||
(function (i, s, o, g, r, a, m) { | |||||
i['GoogleAnalyticsObject'] = r; | |||||
i[r] = i[r] || function () { | |||||
(i[r].q = i[r].q || []).push(arguments) | |||||
}, i[r].l = 1 * new Date(); | |||||
a = s.createElement(o), | |||||
(function(i, s, o, g, r, a, m) { | |||||
i['GoogleAnalyticsObject'] = r; | |||||
i[r] = i[r] || function() { | |||||
(i[r].q = i[r].q || []).push(arguments) | |||||
}, i[r].l = 1 * new Date(); | |||||
a = s.createElement(o), | |||||
m = s.getElementsByTagName(o)[0]; | m = s.getElementsByTagName(o)[0]; | ||||
a.async = 1; | |||||
a.src = g; | |||||
m.parentNode.insertBefore(a, m) | |||||
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); | |||||
ga('create', 'UA-40833733-1', 'transfer.sh'); | |||||
ga('send', 'pageview'); | |||||
a.async = 1; | |||||
a.src = g; | |||||
m.parentNode.insertBefore(a, m) | |||||
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); | |||||
ga('create', 'UA-40833733-1', 'transfer.sh'); | |||||
ga('send', 'pageview'); | |||||
</script> | </script> | ||||
include "includes/navigation.html" | |||||
include "includes/navigation.html" | |||||
<div id="navigation"> | |||||
<div class="wrapper"> | |||||
<a href="/"> | |||||
<h1>transfer.sh</h1> | |||||
</a> | |||||
<ul class="hidden-xs"> | |||||
<li><a href="/">home</a> | |||||
</li> | |||||
<li><a href="/#samples">sample use cases</a> | |||||
</li> | |||||
<li><a href="/#contact">contact us</a> | |||||
</li> | |||||
</ul> | |||||
</div> | |||||
</div> | |||||
<section id="home"> | <section id="home"> | ||||
<div class="wrapper"> | <div class="wrapper"> | ||||
<br/> | <br/> | ||||
<h2> | <h2> | ||||
{{.Filename}}</h2> | {{.Filename}}</h2> | ||||
include "includes/download-btn.html" | |||||
<div> | |||||
<a href="#" id="copy-link-btn" class="btn-cta btn">copy link</a> | |||||
<a href="{{.Url}}" class="btn-cta btn"> download</i> </a> | |||||
<div id="copy-link-wrapper" class="copy-link-wrapper"> | |||||
<p>Press Ctrl / CMD + C to copy link to your clipboard.</p> | |||||
<input readonly="readonly" type="text" value="{{.Url}}" /> | |||||
</div> | |||||
<div id="overlay" class="overlay"></div> | |||||
</div> | |||||
</div> | </div> | ||||
</section> | </section> | ||||
include "includes/js.html" | |||||
include "includes/js.html" | |||||
@@ -8,7 +8,7 @@ | |||||
include "includes/head.html" | include "includes/head.html" | ||||
<body id="download"> | |||||
<body id="download"> | |||||
<script> | <script> | ||||
(function(i, s, o, g, r, a, m) { | (function(i, s, o, g, r, a, m) { | ||||
i['GoogleAnalyticsObject'] = r; | i['GoogleAnalyticsObject'] = r; | ||||
@@ -25,8 +25,23 @@ include "includes/head.html" | |||||
ga('send', 'pageview'); | ga('send', 'pageview'); | ||||
</script> | </script> | ||||
include "includes/navigation.html" | include "includes/navigation.html" | ||||
<div id="navigation"> | |||||
<div class="wrapper"> | |||||
<a href="/"> | |||||
<h1>transfer.sh</h1> | |||||
</a> | |||||
<ul class="hidden-xs"> | |||||
<li><a href="/">home</a> | |||||
</li> | |||||
<li><a href="/#samples">sample use cases</a> | |||||
</li> | |||||
<li><a href="/#contact">contact us</a> | |||||
</li> | |||||
</ul> | |||||
</div> | |||||
</div> | |||||
<section id="home"> | <section id="home"> | ||||
<div class="wrapper"> | <div class="wrapper"> | ||||
<br/> | <br/> | ||||
@@ -51,13 +66,19 @@ include "includes/head.html" | |||||
<br/> | <br/> | ||||
<div> | <div> | ||||
include "includes/download-btn.html" | |||||
<div> | |||||
<a href="#" id="copy-link-btn" class="btn-cta btn">copy link</a> | |||||
<a href="{{.Url}}" class="btn-cta btn"> download</i> </a> | |||||
<div id="copy-link-wrapper" class="copy-link-wrapper"> | |||||
<p>Press Ctrl / CMD + C to copy link to your clipboard.</p> | |||||
<input readonly="readonly" type="text" value="{{.Url}}" /> | |||||
</div> | |||||
<div id="overlay" class="overlay"></div> | |||||
</div> | |||||
</section> | </section> | ||||
include "includes/js.html" | include "includes/js.html" | ||||
</body> | </body> | ||||
</html> | </html> |
@@ -6,22 +6,7 @@ | |||||
<html class="no-js"> | <html class="no-js"> | ||||
<!--<![endif]--> | <!--<![endif]--> | ||||
<head> | |||||
<meta charset="utf-8"> | |||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | |||||
<title>{{.Filename}} - transfer.sh</title> | |||||
<meta name="description" content="Easy and fast file sharing from the command-line."> | |||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |||||
<!-- Place favicon.ico and apple-touch-icon.png in the root directory --> | |||||
<link rel="stylesheet" href="styles/main.css"> | |||||
<link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:100,200,300' rel='stylesheet' type='text/css'> | |||||
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400' rel='stylesheet' type='text/css'> | |||||
<link href='http://fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'> | |||||
<!-- build:js scripts/vendor/modernizr.js --> | |||||
<script src="bower_components/modernizr/modernizr.js"></script> | |||||
<!-- endbuild --> | |||||
</head> | |||||
include "includes/head.html" | |||||
<body id="download"> | <body id="download"> | ||||
<script> | <script> | ||||
@@ -40,17 +25,7 @@ | |||||
ga('send', 'pageview'); | ga('send', 'pageview'); | ||||
</script> | </script> | ||||
<div id="navigation"> | |||||
<div class="wrapper"> | |||||
<h1>transfer.sh</h1> | |||||
<ul class="hidden-xs"> | |||||
<li><a href="#samples">sample use cases</a> | |||||
</li> | |||||
<li><a href="#contact">contact us</a> | |||||
</li> | |||||
</ul> | |||||
</div> | |||||
</div> | |||||
include "includes/navigation.html" | |||||
<section id="home"> | <section id="home"> | ||||
<div class="wrapper"> | <div class="wrapper"> | ||||
@@ -60,18 +35,23 @@ | |||||
<div class="row animated fadeInDown"> | <div class="row animated fadeInDown"> | ||||
<div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12"> | <div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12"> | ||||
<div class="terminal-top"> | <div class="terminal-top"> | ||||
</div> | </div> | ||||
<div id="terminal" class="terminal"> | <div id="terminal" class="terminal"> | ||||
<div id="md-preview"></div> | <div id="md-preview"></div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<br/> | <br/> | ||||
include "includes/download-btn.html" | |||||
<div> | |||||
<a href="#" id="copy-link-btn" class="btn-cta btn">copy link</a> | |||||
<a href="{{.Url}}" class="btn-cta btn"> download</i> </a> | |||||
<div id="copy-link-wrapper" class="copy-link-wrapper"> | |||||
<p>Press Ctrl / CMD + C to copy link to your clipboard.</p> | |||||
<input readonly="readonly" type="text" value="{{.Url}}" /> | |||||
</div> | |||||
<div id="overlay" class="overlay"></div> | |||||
</div> | |||||
</section> | </section> | ||||
@@ -90,7 +70,6 @@ | |||||
<!--[if lt IE 7]> | <!--[if lt IE 7]> | ||||
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p> | <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p> | ||||
<![endif]--> | <![endif]--> | ||||
<script> | <script> | ||||
(function(b, o, i, l, e, r) { | (function(b, o, i, l, e, r) { | ||||
b.GoogleAnalyticsObject = l; | b.GoogleAnalyticsObject = l; | ||||
@@ -108,7 +87,9 @@ | |||||
ga('send', 'pageview'); | ga('send', 'pageview'); | ||||
</script> | </script> | ||||
include "includes/js.html" | include "includes/js.html" | ||||
<script> | <script> | ||||
var text = "# Markdown *works*."; | var text = "# Markdown *works*."; | ||||
@@ -45,14 +45,14 @@ | |||||
</rdf:RDF> | </rdf:RDF> | ||||
</metadata> | </metadata> | ||||
<g | <g | ||||
transform="translate(-93.957497,-365.26607)" | |||||
transform="matrix(1,0,0,0.94456233,-93.957497,-345.57658)" | |||||
id="layer1"> | id="layer1"> | ||||
<path | <path | ||||
d="m 85.371201,355.16455 789.901059,0 0,49.98291 -789.901059,0 z" | |||||
d="m 93.957497,365.85895 750.000003,0 0,31.76074 -750.000003,0 z" | |||||
id="rect4487" | id="rect4487" | ||||
style="fill:#85b5bb;fill-opacity:1;stroke:none" /> | style="fill:#85b5bb;fill-opacity:1;stroke:none" /> | ||||
<g | <g | ||||
transform="matrix(1.4512649,0,0,-1.4512649,-114.5591,1453.446)" | |||||
transform="matrix(1.4512649,0,0,-1.4512649,-114.5591,1454.9192)" | |||||
id="g24" | id="g24" | ||||
style="fill:#ff7050"> | style="fill:#ff7050"> | ||||
<g | <g | ||||
@@ -78,7 +78,7 @@ | |||||
</g> | </g> | ||||
</g> | </g> | ||||
<g | <g | ||||
transform="matrix(1.4512649,0,0,-1.4512649,-114.5591,1453.507)" | |||||
transform="matrix(1.4512649,0,0,-1.4512649,-114.5591,1454.9802)" | |||||
id="g40" | id="g40" | ||||
style="fill:#ffed5d"> | style="fill:#ffed5d"> | ||||
<g | <g | ||||
@@ -104,7 +104,7 @@ | |||||
</g> | </g> | ||||
</g> | </g> | ||||
<g | <g | ||||
transform="matrix(1.4512649,0,0,-1.4512649,-115.0147,1453.4765)" | |||||
transform="matrix(1.4512649,0,0,-1.4512649,-115.0147,1454.9497)" | |||||
id="g56" | id="g56" | ||||
style="fill:#93de7f"> | style="fill:#93de7f"> | ||||
<g | <g | ||||
@@ -6,4 +6,4 @@ | |||||
<script src="scripts/showdown.js"></script> | <script src="scripts/showdown.js"></script> | ||||
<script src="scripts/main.js"></script> | <script src="scripts/main.js"></script> | ||||
<!-- endbuild --> | <!-- endbuild --> | ||||
@@ -10,7 +10,7 @@ include "includes/head.html" | |||||
<body> | <body> | ||||
<script> | <script> | ||||
(function(i, s, o, g, r, a, m) { | (function(i, s, o, g, r, a, m) { | ||||
i['GoogleAnalyticsObject'] = r; | i['GoogleAnalyticsObject'] = r; | ||||
@@ -144,8 +144,8 @@ include "includes/head.html" | |||||
<div class="terminal"> | <div class="terminal"> | ||||
<code> | <code> | ||||
<span class="code-title"># Add this to .bashrc or its equivalent</span> | <span class="code-title"># Add this to .bashrc or its equivalent</span> | ||||
<br/>transfer() { | |||||
<br># write to output to tmpfile because of progress bar | |||||
<br/>transfer() { | |||||
<br># write to output to tmpfile because of progress bar | |||||
<br>tmpfile=$( mktemp -t transferXXX ); curl --progress-bar --upload-file $1 https://transfer.sh/$(basename $1) >> $tmpfile; cat $tmpfile; rm -f $tmpfile; } | <br>tmpfile=$( mktemp -t transferXXX ); curl --progress-bar --upload-file $1 https://transfer.sh/$(basename $1) >> $tmpfile; cat $tmpfile; rm -f $tmpfile; } | ||||
<br/> | <br/> | ||||
<br/>alias transfer=transfer | <br/>alias transfer=transfer | ||||
@@ -207,7 +207,8 @@ include "includes/head.html" | |||||
<span class="code-title"># Scan for malware or viruses using Clamav</span> | <span class="code-title"># Scan for malware or viruses using Clamav</span> | ||||
<br>$ wget http://www.eicar.org/download/eicar.com | <br>$ wget http://www.eicar.org/download/eicar.com | ||||
<br>$ curl -X PUT --upload-file ./eicar.com https://transfer.sh/eicar.com/scan | <br>$ curl -X PUT --upload-file ./eicar.com https://transfer.sh/eicar.com/scan | ||||
<br><br> | |||||
<br> | |||||
<br> | |||||
<span class="code-title"># Upload malware to VirusTotal, get a permalink in return</span> | <span class="code-title"># Upload malware to VirusTotal, get a permalink in return</span> | ||||
<br>$ curl -X PUT --upload-file nhgbhhj https://transfer.sh/test.txt/virustotal | <br>$ curl -X PUT --upload-file nhgbhhj https://transfer.sh/test.txt/virustotal | ||||
<br> | <br> | ||||
@@ -221,7 +222,7 @@ include "includes/head.html" | |||||
<div class="terminal"> | <div class="terminal"> | ||||
<code> | <code> | ||||
<span class="code-title"># Backup, encrypt and transfer</span> | <span class="code-title"># Backup, encrypt and transfer</span> | ||||
<br/>$ mysqldump --all-databases|gzip|gpg -ac -o-|curl -X PUT --upload-file "-" https://transfer.sh/test.txt </code> | |||||
<br/>$ mysqldump --all-databases|gzip|gpg -ac -o-|curl -X PUT --upload-file "-" https://transfer.sh/test.txt</code> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
@@ -252,6 +253,17 @@ include "includes/head.html" | |||||
</div> | </div> | ||||
</section> | </section> | ||||
<section id="share"> | |||||
<div class="wrapper"> | |||||
<h2>Follow on GitHub</h2> | |||||
<br> | |||||
<br> | |||||
<iframe src="http://ghbtns.com/github-btn.html?user=dutchcoders&repo=transfer.sh&type=follow&count=true&size=large" allowtransparency="true" frameborder="0" scrolling="0" width="300" height="50"></iframe> | |||||
<iframe src="http://ghbtns.com/github-btn.html?user=dutchcoders&repo=transfer.sh&type=watch&count=true&size=large" allowtransparency="true" frameborder="0" scrolling="0" width="200" height="50"></iframe> | |||||
</div> | |||||
</section> | |||||
<section id="reviews"> | <section id="reviews"> | ||||
<div class="wrapper"> | <div class="wrapper"> | ||||
<div class="row"> | <div class="row"> | ||||
@@ -296,6 +308,8 @@ include "includes/head.html" | |||||
</div> | </div> | ||||
</section> | </section> | ||||
<section id="share"> | <section id="share"> | ||||
<div class="wrapper"> | <div class="wrapper"> | ||||
<h2>Share the love</h2> | <h2>Share the love</h2> | ||||
@@ -329,13 +343,23 @@ include "includes/head.html" | |||||
</div> | </div> | ||||
</section> | </section> | ||||
include "includes/footer.html" | |||||
include "includes/js.html" | |||||
<section id="tor"> | |||||
<div class="wrapper"> | |||||
<a href="https://torproject.com"><img src="images/tor.svg" alt=""> </a><br/> | |||||
<a href="https://jxm5d6emw5rknovg.onion/">https://jxm5d6emw5rknovg.onion/</a> | |||||
</div> | |||||
</section> | |||||
include "includes/footer.html" | |||||
include "includes/js.html" | |||||
</body> | </body> | ||||
@@ -73,7 +73,7 @@ $(document).ready(function() { | |||||
$('#web').addClass('dragged'); | $('#web').addClass('dragged'); | ||||
}).bind("dragleave", function(event) { | }).bind("dragleave", function(event) { | ||||
$('#terminal').removeClass('dragged'); | $('#terminal').removeClass('dragged'); | ||||
$('#web').removeClass('dragged'); | |||||
$('#web').removeClass('dragged'); | |||||
}).bind("drop dragdrop", function(event) { | }).bind("drop dragdrop", function(event) { | ||||
var files = event.originalEvent.target.files || event.originalEvent.dataTransfer.files; | var files = event.originalEvent.target.files || event.originalEvent.dataTransfer.files; | ||||
@@ -93,14 +93,74 @@ $(document).ready(function() { | |||||
}); | }); | ||||
$('input[type=file]').on('change', function(event) { | $('input[type=file]').on('change', function(event) { | ||||
$.each(this.files, function(index, file) { | $.each(this.files, function(index, file) { | ||||
if (file instanceof Blob) { | if (file instanceof Blob) { | ||||
upload(file); | upload(file); | ||||
} | } | ||||
}); | }); | ||||
}); | |||||
})(); | |||||
}); | |||||
// clipboard | |||||
if (window.location.href.indexOf("download") > -1 ) { | |||||
(function() { | |||||
var copylinkbtn = document.getElementById("copy-link-btn"), | |||||
copylink = document.getElementById("copy-link-wrapper"), | |||||
overlay = document.getElementById("overlay"); | |||||
var url = "http://url" | |||||
copylinkbtn.addEventListener("click", function() { | |||||
var error = document.getElementsByClassName('error'); | |||||
while (error[0]) { | |||||
error[0].parentNode.removeChild(error[0]); | |||||
} | |||||
document.body.className += ' active'; | |||||
copylink.children[1].value = url; | |||||
copylink.children[1].focus(); | |||||
copylink.children[1].select(); | |||||
}, false); | |||||
overlay.addEventListener("click", function() { | |||||
document.body.className = ''; | |||||
}, false); | |||||
copylink.children[1].addEventListener("keydown", function(e) { | |||||
var error = document.getElementsByClassName('error'); | |||||
while (error[0]) { | |||||
error[0].parentNode.removeChild(error[0]); | |||||
} | |||||
setTimeout(function() { | |||||
if ((e.metaKey || e.ctrlKey) && e.keyCode === 67 && isTextSelected(copylink.children[2])) { | |||||
document.body.className = ''; | |||||
} else if ((e.metaKey || e.ctrlKey) && e.keyCode === 67 && isTextSelected(copylink.children[2]) === false) { | |||||
var error = document.createElement('span'); | |||||
error.className = 'error'; | |||||
var errortext = document.createTextNode('The link was not copied, make sure the entire text is selected.'); | |||||
error.appendChild(errortext); | |||||
copylink.appendChild(error); | |||||
} | |||||
}, 100); | |||||
function isTextSelected(input) { | |||||
if (typeof input.selectionStart == "number") { | |||||
return input.selectionStart == 0 && input.selectionEnd == input.value.length; | |||||
} else if (typeof document.selection != "undefined") { | |||||
input.focus(); | |||||
return document.selection.createRange().text == input.value; | |||||
} | |||||
} | |||||
}, false); | |||||
})(); | |||||
}; | |||||
})(); |
@@ -1,4 +1,9 @@ | |||||
body { | |||||
max-width: 2000px; | |||||
margin: 0 auto; | |||||
} | |||||
.browsehappy { | .browsehappy { | ||||
margin: 0.2em 0; | margin: 0.2em 0; | ||||
background: orange; | background: orange; | ||||
@@ -21,7 +21,7 @@ | |||||
h4 { | h4 { | ||||
margin-top: 30px; | margin-top: 30px; | ||||
} | } | ||||
padding: 50px 0; | |||||
padding: 75px 0; | |||||
text-align: center; | text-align: center; | ||||
.btn-cta { | .btn-cta { | ||||
margin: 30px 0; | margin: 30px 0; | ||||
@@ -61,6 +61,26 @@ | |||||
} | } | ||||
} | } | ||||
#github { | |||||
text-align: center; | |||||
padding: 50px 0; | |||||
} | |||||
#tor { | |||||
text-align: center; | |||||
img { | |||||
max-width: 100px; | |||||
margin: 0 auto; | |||||
margin-bottom: 10px; | |||||
} | |||||
background: @light-gray; | |||||
padding: 50px 0; | |||||
a { | |||||
font-size: 20px; | |||||
} | |||||
} | |||||
footer { | footer { | ||||
text-align: center; | text-align: center; | ||||
@@ -5889,6 +5889,10 @@ body { | |||||
-o-animation-duration: 0.75s; | -o-animation-duration: 0.75s; | ||||
animation-duration: 0.75s; | animation-duration: 0.75s; | ||||
} | } | ||||
body { | |||||
max-width: 2000px; | |||||
margin: 0 auto; | |||||
} | |||||
.browsehappy { | .browsehappy { | ||||
margin: 0.2em 0; | margin: 0.2em 0; | ||||
background: orange; | background: orange; | ||||
@@ -6134,7 +6138,7 @@ a:hover { | |||||
font-size: 100px; | font-size: 100px; | ||||
} | } | ||||
#samples { | #samples { | ||||
padding: 50px 0; | |||||
padding: 75px 0; | |||||
text-align: center; | text-align: center; | ||||
} | } | ||||
#samples h4 { | #samples h4 { | ||||
@@ -6174,6 +6178,23 @@ a:hover { | |||||
color: #fff; | color: #fff; | ||||
text-decoration: none; | text-decoration: none; | ||||
} | } | ||||
#github { | |||||
text-align: center; | |||||
padding: 50px 0; | |||||
} | |||||
#tor { | |||||
text-align: center; | |||||
background: #f6f8f8; | |||||
padding: 50px 0; | |||||
} | |||||
#tor img { | |||||
max-width: 100px; | |||||
margin: 0 auto; | |||||
margin-bottom: 10px; | |||||
} | |||||
#tor a { | |||||
font-size: 20px; | |||||
} | |||||
footer { | footer { | ||||
text-align: center; | text-align: center; | ||||
background: #36535a; | background: #36535a; | ||||