Permalink
Please sign in to comment.
Browse files
docker, previews, tor, bugfixes
* implemented docker * added previews (markdown, html, text, video, audio) * added tor support * several bugfixes
Showing
with
4,402 additions
and 308 deletions.
- +16 −0 .dockerignore
- +6 −0 .ebextensions/01config_nginx.config
- +1 −0 .gitignore
- +1 −1 {transfersh-server → }/Dockerfile
- +33 −3 Gruntfile.js
- +10 −0 README.md
- +2 −0 package.json
- +110 −36 transfersh-server/handlers.go
- +23 −15 transfersh-server/main.go
- +1 −1 transfersh-server/static/404.html
- +132 −0 transfersh-server/static/download.audio.html
- +134 −0 transfersh-server/static/download.code.html
- +116 −0 transfersh-server/static/download.html
- +126 −0 transfersh-server/static/download.image.html
- +124 −0 transfersh-server/static/download.markdown.html
- +129 −0 transfersh-server/static/download.video.html
- BIN transfersh-server/static/images/bitcoin.png
- +5 −5 transfersh-server/static/images/terminal-top.svg
- +6 −0 transfersh-server/static/images/tor.svg
- +5 −0 transfersh-server/static/includes/download-bottom.html
- +10 −0 transfersh-server/static/includes/download-btn.html
- +6 −0 transfersh-server/static/includes/download-top.html
- +36 −0 transfersh-server/static/includes/footer.html
- +15 −0 transfersh-server/static/includes/ga.html
- +12 −0 transfersh-server/static/includes/head.html
- +2 −0 transfersh-server/static/includes/js.html
- +15 −0 transfersh-server/static/includes/navigation.html
- +132 −94 transfersh-server/static/index.html
- +3 −3 transfersh-server/static/scripts/main.js
- +1 −1 transfersh-server/static/styles/main.css
- +46 −2 transfersh-server/storage.go
- +172 −0 transfersh-server/utils.go
- +47 −0 transfersh-web/download.audio.html
- +143 −0 transfersh-web/download.code.html
- +31 −0 transfersh-web/download.html
- +41 −0 transfersh-web/download.image.html
- +39 −0 transfersh-web/download.markdown.html
- +44 −0 transfersh-web/download.video.html
- BIN transfersh-web/images/bitcoin.png
- +5 −5 transfersh-web/images/terminal-top.svg
- +6 −0 transfersh-web/images/tor.svg
- +5 −0 transfersh-web/includes/download-bottom.html
- +10 −0 transfersh-web/includes/download-btn.html
- +6 −0 transfersh-web/includes/download-top.html
- +36 −0 transfersh-web/includes/footer.html
- +15 −0 transfersh-web/includes/ga.html
- +14 −0 transfersh-web/includes/head.html
- +9 −0 transfersh-web/includes/js.html
- +15 −0 transfersh-web/includes/navigation.html
- +54 −92 transfersh-web/index.html
- +61 −0 transfersh-web/scripts/clipboard.js
- +86 −8 transfersh-web/scripts/main.js
- +1,296 −0 transfersh-web/scripts/showdown.js
- +0 −1 transfersh-web/scripts/typewriter-bundle.min.js
- +3 −3 transfersh-web/styles/bootstrap.less
- +8 −6 transfersh-web/styles/includes/global.less
- +9 −3 transfersh-web/styles/includes/home.less
- +21 −1 transfersh-web/styles/includes/pages.less
- +200 −0 transfersh-web/styles/includes/preview.less
- +16 −14 transfersh-web/styles/includes/reviews.less
- +750 −13 transfersh-web/styles/main.css
- +1 −1 transfersh-web/styles/main.css.map
- +1 −0 transfersh-web/styles/main.less
16
.dockerignore
@@ -0,0 +1,16 @@ | ||
+build | ||
+pkg | ||
+dist | ||
+src | ||
+bin | ||
+*.pyc | ||
+*.egg-info | ||
+.vagrant | ||
+.git | ||
+.tmp | ||
+bower_components | ||
+node_modules | ||
+extras | ||
+build | ||
+transfersh-server/run.sh | ||
+.elasticbeanstalk |
6
.ebextensions/01config_nginx.config
@@ -0,0 +1,6 @@ | ||
+files: | ||
+ "/etc/nginx/conf.d/client_max_body_size.conf": | ||
+ mode: "000644" | ||
+ owner: root | ||
+ group: root | ||
+ content: "client_max_body_size 0;" |
1
.gitignore
2
transfersh-server/Dockerfile → Dockerfile
36
Gruntfile.js
10
README.md
2
package.json
146
transfersh-server/handlers.go
38
transfersh-server/main.go
2
transfersh-server/static/404.html
132
transfersh-server/static/download.audio.html
@@ -0,0 +1,132 @@ | ||
+ | ||
+ | ||
+</html> | ||
+<!doctype html> | ||
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> | ||
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> | ||
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> | ||
+<!--[if gt IE 8]><!--> | ||
+<html class="no-js"> | ||
+<!--<![endif]--> | ||
+ | ||
+<head> | ||
+ <meta charset="utf-8"> | ||
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
+ <title>transfer.sh - Easy and fast file sharing from the command-line.</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='//fonts.googleapis.com/css?family=Source+Sans+Pro:100,200,300' rel='stylesheet' type='text/css'> | ||
+ <link href='//fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'> | ||
+ <script src="/scripts/vendor/modernizr.js"></script> | ||
+</head> | ||
+ | ||
+ | ||
+<body id="download"> | ||
+ | ||
+ <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), | ||
+ 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'); | ||
+ </script> | ||
+ | ||
+ <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"> | ||
+ <div class="wrapper"> | ||
+ | ||
+ <br/> | ||
+ <h2 class="page-title">{{.Filename}}</h2> | ||
+ <h4>type: <b>{{.ContentType}}</b></h4> | ||
+ <h4>size: <b>{{.ContentLength | format "#,###."}}</b> bytes</h4> | ||
+ | ||
+ <a href="{{.Url}}" class="btn-cta btn"> download</i> </a> <br/><br/> | ||
+ | ||
+ | ||
+ <div class="row animated fadeInDown"> | ||
+ <div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12"> | ||
+ <div class="terminal-top"> | ||
+ | ||
+ </div> | ||
+ <div id="terminal" class="terminal preview-image"> | ||
+ <audio controls> | ||
+ <source src="{{.Url}}" type="{{.ContentType}}"> | ||
+ </audio> | ||
+ </div> | ||
+ </div> | ||
+ </div> | ||
+ <br/> | ||
+ <div> | ||
+ | ||
+ </section> | ||
+ | ||
+ <footer> | ||
+ <div class="wrapper"> | ||
+ <div style=""> | ||
+ <a href="bitcoin:164ybRMLbg1dhhWWiUkXtiNr7jUhMKdJqH" label="Bitcoin+Donation" style="word-wrap: break-word;"> | ||
+ <img border="0" src=" /images/bitcoin.png" style="margin: 0 auto;;"> | ||
+ </a> | ||
+ </div> | ||
+ <br/> | ||
+ <br/> | ||
+ <img src="/images/Logo-orange.png" alt="Founded in Holland"> | ||
+ <p>Made with <i class="icon-heart"></i> by <a href="http://blog.dutchcoders.io/" title="Dutch Coders">Dutch Coders</a> | ||
+ </p> | ||
+ </div> | ||
+ | ||
+ </footer> | ||
+ | ||
+ | ||
+ <a href="https://github.com/you"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> | ||
+ | ||
+ <script> | ||
+ (function() { | ||
+ var uv = document.createElement('script'); | ||
+ uv.type = 'text/javascript'; | ||
+ uv.async = true; | ||
+ uv.src = '//widget.uservoice.com/5rkATbLIm8ClJQeOirOhFg.js'; | ||
+ var s = document.getElementsByTagName('script')[0]; | ||
+ s.parentNode.insertBefore(uv, s) | ||
+ })() | ||
+ </script> | ||
+ | ||
+ <!--[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> | ||
+ <![endif]--> | ||
+ | ||
+ | ||
+ | ||
+ | ||
+ <script src="/scripts/main.js"></script> | ||
+ | ||
+ | ||
+ | ||
+</body> | ||
+ | ||
+</html> |
134
transfersh-server/static/download.code.html
@@ -0,0 +1,134 @@ | ||
+<!doctype html> | ||
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> | ||
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> | ||
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> | ||
+<!--[if gt IE 8]><!--> | ||
+<html class="no-js"> | ||
+<!--<![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'> | ||
+ <script src="scripts/vendor/modernizr.js"></script> | ||
+</head> | ||
+ | ||
+<body id="download"> | ||
+ <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), | ||
+ 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'); | ||
+ </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> | ||
+ | ||
+<section id="home"> | ||
+ <div class="wrapper"> | ||
+ <h2> | ||
+ {{.Filename}}</h2> | ||
+ <a href="{{.Url}}"></a> | ||
+ <div class="row animated fadeInDown"> | ||
+ <div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12"> | ||
+ <div class="terminal-top"> | ||
+ | ||
+ </div> | ||
+ <div id="terminal" class="terminal"> | ||
+ <div id="code"></div> | ||
+ </div> | ||
+ | ||
+ | ||
+ | ||
+ </div> | ||
+ | ||
+ </div> | ||
+ | ||
+ <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> | ||
+ | ||
+ | ||
+ <script> | ||
+ (function() { | ||
+ var uv = document.createElement('script'); | ||
+ uv.type = 'text/javascript'; | ||
+ uv.async = true; | ||
+ uv.src = '//widget.uservoice.com/5rkATbLIm8ClJQeOirOhFg.js'; | ||
+ var s = document.getElementsByTagName('script')[0]; | ||
+ s.parentNode.insertBefore(uv, s) | ||
+ })() | ||
+ </script> | ||
+ | ||
+ <!--[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> | ||
+ <![endif]--> | ||
+ | ||
+ <script> | ||
+ (function(b, o, i, l, e, r) { | ||
+ b.GoogleAnalyticsObject = l; | ||
+ b[l] || (b[l] = | ||
+ function() { | ||
+ (b[l].q = b[l].q || []).push(arguments) | ||
+ }); | ||
+ b[l].l = +new Date; | ||
+ e = o.createElement(i); | ||
+ r = o.getElementsByTagName(i)[0]; | ||
+ e.src = '//www.google-analytics.com/analytics.js'; | ||
+ r.parentNode.insertBefore(e, r) | ||
+ }(window, document, 'script', 'ga')); | ||
+ ga('create', 'UA-40833733-1', 'transfer.sh'); | ||
+ ga('send', 'pageview'); | ||
+ </script> | ||
+ | ||
+ <script src="scripts/main.js"></script> | ||
+ | ||
+ <script> | ||
+ | ||
+ var text = "# Markdown *works*."; | ||
+ | ||
+ var converter = new Showdown.converter(); | ||
+ var html = converter.makeHtml(text); | ||
+ $('#md-preview').append(html); | ||
+ | ||
+ </script> | ||
+ | ||
+ | ||
+</body> | ||
+ | ||
+</html> |
116
transfersh-server/static/download.html
@@ -0,0 +1,116 @@ | ||
+<!doctype html> | ||
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> | ||
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> | ||
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> | ||
+<!--[if gt IE 8]><!--> | ||
+<html class="no-js"> | ||
+<!--<![endif]--> | ||
+ | ||
+<head> | ||
+ <meta charset="utf-8"> | ||
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
+ <title>transfer.sh - Easy and fast file sharing from the command-line.</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='//fonts.googleapis.com/css?family=Source+Sans+Pro:100,200,300' rel='stylesheet' type='text/css'> | ||
+ <link href='//fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'> | ||
+ <script src="/scripts/vendor/modernizr.js"></script> | ||
+</head> | ||
+ | ||
+ | ||
+<body id="download"> | ||
+ | ||
+ <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), | ||
+ 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'); | ||
+ </script> | ||
+ | ||
+ <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"> | ||
+ <div class="wrapper"> | ||
+ | ||
+ <br/> | ||
+ <h2 class="page-title">{{.Filename}}</h2> | ||
+ <h4>type: <b>{{.ContentType}}</b></h4> | ||
+ <h4>size: <b>{{.ContentLength | format "#,###."}}</b> bytes</h4> | ||
+ | ||
+ <a href="{{.Url}}" class="btn-cta btn"> download</i> </a> <br/><br/> | ||
+ | ||
+ </div> | ||
+</section> | ||
+ | ||
+ <footer> | ||
+ <div class="wrapper"> | ||
+ <div style=""> | ||
+ <a href="bitcoin:164ybRMLbg1dhhWWiUkXtiNr7jUhMKdJqH" label="Bitcoin+Donation" style="word-wrap: break-word;"> | ||
+ <img border="0" src=" /images/bitcoin.png" style="margin: 0 auto;;"> | ||
+ </a> | ||
+ </div> | ||
+ <br/> | ||
+ <br/> | ||
+ <img src="/images/Logo-orange.png" alt="Founded in Holland"> | ||
+ <p>Made with <i class="icon-heart"></i> by <a href="http://blog.dutchcoders.io/" title="Dutch Coders">Dutch Coders</a> | ||
+ </p> | ||
+ </div> | ||
+ | ||
+ </footer> | ||
+ | ||
+ | ||
+ <a href="https://github.com/you"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> | ||
+ | ||
+ <script> | ||
+ (function() { | ||
+ var uv = document.createElement('script'); | ||
+ uv.type = 'text/javascript'; | ||
+ uv.async = true; | ||
+ uv.src = '//widget.uservoice.com/5rkATbLIm8ClJQeOirOhFg.js'; | ||
+ var s = document.getElementsByTagName('script')[0]; | ||
+ s.parentNode.insertBefore(uv, s) | ||
+ })() | ||
+ </script> | ||
+ | ||
+ <!--[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> | ||
+ <![endif]--> | ||
+ | ||
+ | ||
+ | ||
+ | ||
+ <script src="/scripts/main.js"></script> | ||
+ | ||
+ | ||
+ | ||
+ | ||
+ | ||
+</body> | ||
+ | ||
+</html> |
126
transfersh-server/static/download.image.html
@@ -0,0 +1,126 @@ | ||
+<!doctype html> | ||
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> | ||
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> | ||
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> | ||
+<!--[if gt IE 8]><!--> | ||
+<html class="no-js"> | ||
+<!--<![endif]--> | ||
+ | ||
+<head> | ||
+ <meta charset="utf-8"> | ||
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
+ <title>transfer.sh - Easy and fast file sharing from the command-line.</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='//fonts.googleapis.com/css?family=Source+Sans+Pro:100,200,300' rel='stylesheet' type='text/css'> | ||
+ <link href='//fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'> | ||
+ <script src="/scripts/vendor/modernizr.js"></script> | ||
+</head> | ||
+ | ||
+ | ||
+<body id="download"> | ||
+ | ||
+ <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), | ||
+ 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'); | ||
+ </script> | ||
+ | ||
+ <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"> | ||
+ <div class="wrapper"> | ||
+ | ||
+ <br/> | ||
+ <h2 class="page-title">{{.Filename}}</h2> | ||
+ <h4>type: <b>{{.ContentType}}</b></h4> | ||
+ <h4>size: <b>{{.ContentLength | format "#,###."}}</b> bytes</h4> | ||
+ | ||
+ <a href="{{.Url}}" class="btn-cta btn"> download</i> </a> <br/><br/> | ||
+ | ||
+ | ||
+ <div class="row animated fadeInDown"> | ||
+ <div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12"> | ||
+ <div class="terminal-top"> | ||
+ | ||
+ </div> | ||
+ <div id="terminal" class="terminal preview-image"> | ||
+ <img src="{{.Url}}" alt=""> | ||
+ </div> | ||
+ </div> | ||
+ </div> | ||
+ <br/> | ||
+ <div> | ||
+ <div> | ||
+ </section> | ||
+ | ||
+ <footer> | ||
+ <div class="wrapper"> | ||
+ <div style=""> | ||
+ <a href="bitcoin:164ybRMLbg1dhhWWiUkXtiNr7jUhMKdJqH" label="Bitcoin+Donation" style="word-wrap: break-word;"> | ||
+ <img border="0" src=" /images/bitcoin.png" style="margin: 0 auto;;"> | ||
+ </a> | ||
+ </div> | ||
+ <br/> | ||
+ <br/> | ||
+ <img src="/images/Logo-orange.png" alt="Founded in Holland"> | ||
+ <p>Made with <i class="icon-heart"></i> by <a href="http://blog.dutchcoders.io/" title="Dutch Coders">Dutch Coders</a> | ||
+ </p> | ||
+ </div> | ||
+ | ||
+ </footer> | ||
+ | ||
+ | ||
+ <a href="https://github.com/you"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> | ||
+ | ||
+ <script> | ||
+ (function() { | ||
+ var uv = document.createElement('script'); | ||
+ uv.type = 'text/javascript'; | ||
+ uv.async = true; | ||
+ uv.src = '//widget.uservoice.com/5rkATbLIm8ClJQeOirOhFg.js'; | ||
+ var s = document.getElementsByTagName('script')[0]; | ||
+ s.parentNode.insertBefore(uv, s) | ||
+ })() | ||
+ </script> | ||
+ | ||
+ <!--[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> | ||
+ <![endif]--> | ||
+ | ||
+ | ||
+ | ||
+ | ||
+ <script src="/scripts/main.js"></script> | ||
+ | ||
+ | ||
+ | ||
+</body> | ||
+ | ||
+</html> |
124
transfersh-server/static/download.markdown.html
@@ -0,0 +1,124 @@ | ||
+<!doctype html> | ||
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> | ||
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> | ||
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> | ||
+<!--[if gt IE 8]><!--> | ||
+<html class="no-js"> | ||
+<!--<![endif]--> | ||
+ | ||
+<head> | ||
+ <meta charset="utf-8"> | ||
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
+ <title>transfer.sh - Easy and fast file sharing from the command-line.</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='//fonts.googleapis.com/css?family=Source+Sans+Pro:100,200,300' rel='stylesheet' type='text/css'> | ||
+ <link href='//fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'> | ||
+ <script src="/scripts/vendor/modernizr.js"></script> | ||
+</head> | ||
+ | ||
+ | ||
+<body id="download"> | ||
+ | ||
+ <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), | ||
+ 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'); | ||
+ </script> | ||
+ | ||
+ <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"> | ||
+ <div class="wrapper"> | ||
+ | ||
+ <br/> | ||
+ <h2 class="page-title">{{.Filename}}</h2> | ||
+ <h4>type: <b>{{.ContentType}}</b></h4> | ||
+ <h4>size: <b>{{.ContentLength | format "#,###."}}</b> bytes</h4> | ||
+ | ||
+ <a href="{{.Url}}" class="btn-cta btn"> download</i> </a> <br/><br/> | ||
+ | ||
+ | ||
+ <div class="row animated fadeInDown"> | ||
+ <div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12"> | ||
+ <div class="terminal-top"> | ||
+ </div> | ||
+ <div id="terminal" class="terminal"> | ||
+ <div id="md-preview">{{.Content}}</div> | ||
+ </div> | ||
+ </div> | ||
+ </div> | ||
+ <br/> | ||
+ | ||
+</section> | ||
+ | ||
+ | ||
+ <footer> | ||
+ <div class="wrapper"> | ||
+ <div style=""> | ||
+ <a href="bitcoin:164ybRMLbg1dhhWWiUkXtiNr7jUhMKdJqH" label="Bitcoin+Donation" style="word-wrap: break-word;"> | ||
+ <img border="0" src=" /images/bitcoin.png" style="margin: 0 auto;;"> | ||
+ </a> | ||
+ </div> | ||
+ <br/> | ||
+ <br/> | ||
+ <img src="/images/Logo-orange.png" alt="Founded in Holland"> | ||
+ <p>Made with <i class="icon-heart"></i> by <a href="http://blog.dutchcoders.io/" title="Dutch Coders">Dutch Coders</a> | ||
+ </p> | ||
+ </div> | ||
+ | ||
+ </footer> | ||
+ | ||
+ | ||
+ <a href="https://github.com/you"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> | ||
+ | ||
+ <script> | ||
+ (function() { | ||
+ var uv = document.createElement('script'); | ||
+ uv.type = 'text/javascript'; | ||
+ uv.async = true; | ||
+ uv.src = '//widget.uservoice.com/5rkATbLIm8ClJQeOirOhFg.js'; | ||
+ var s = document.getElementsByTagName('script')[0]; | ||
+ s.parentNode.insertBefore(uv, s) | ||
+ })() | ||
+ </script> | ||
+ | ||
+ <!--[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> | ||
+ <![endif]--> | ||
+ | ||
+ | ||
+ | ||
+ | ||
+ <script src="/scripts/main.js"></script> | ||
+ | ||
+ | ||
+</body> | ||
+ | ||
+</html> |
129
transfersh-server/static/download.video.html
@@ -0,0 +1,129 @@ | ||
+<!doctype html> | ||
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> | ||
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> | ||
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> | ||
+<!--[if gt IE 8]><!--> | ||
+<html class="no-js"> | ||
+<!--<![endif]--> | ||
+ | ||
+<head> | ||
+ <meta charset="utf-8"> | ||
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
+ <title>transfer.sh - Easy and fast file sharing from the command-line.</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='//fonts.googleapis.com/css?family=Source+Sans+Pro:100,200,300' rel='stylesheet' type='text/css'> | ||
+ <link href='//fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'> | ||
+ <script src="/scripts/vendor/modernizr.js"></script> | ||
+</head> | ||
+ | ||
+ | ||
+<body id="download"> | ||
+ | ||
+ <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), | ||
+ 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'); | ||
+ </script> | ||
+ | ||
+ <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"> | ||
+ <div class="wrapper"> | ||
+ | ||
+ <br/> | ||
+ <h2 class="page-title">{{.Filename}}</h2> | ||
+ <h4>type: <b>{{.ContentType}}</b></h4> | ||
+ <h4>size: <b>{{.ContentLength | format "#,###."}}</b> bytes</h4> | ||
+ | ||
+ <a href="{{.Url}}" class="btn-cta btn"> download</i> </a> <br/><br/> | ||
+ | ||
+ | ||
+ <div class="row animated fadeInDown"> | ||
+ <div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12"> | ||
+ <div class="terminal-top"> | ||
+ | ||
+ </div> | ||
+ <div id="terminal" class="terminal preview-image"> | ||
+ <video controls> | ||
+ <source src="{{.Url}}" type="{{.ContentType}}"> | ||
+ </video> | ||
+ </div> | ||
+ </div> | ||
+ </div> | ||
+ <br/> | ||
+ <div> | ||
+ | ||
+ </section> | ||
+ | ||
+ <footer> | ||
+ <div class="wrapper"> | ||
+ <div style=""> | ||
+ <a href="bitcoin:164ybRMLbg1dhhWWiUkXtiNr7jUhMKdJqH" label="Bitcoin+Donation" style="word-wrap: break-word;"> | ||
+ <img border="0" src=" /images/bitcoin.png" style="margin: 0 auto;;"> | ||
+ </a> | ||
+ </div> | ||
+ <br/> | ||
+ <br/> | ||
+ <img src="/images/Logo-orange.png" alt="Founded in Holland"> | ||
+ <p>Made with <i class="icon-heart"></i> by <a href="http://blog.dutchcoders.io/" title="Dutch Coders">Dutch Coders</a> | ||
+ </p> | ||
+ </div> | ||
+ | ||
+ </footer> | ||
+ | ||
+ | ||
+ <a href="https://github.com/you"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> | ||
+ | ||
+ <script> | ||
+ (function() { | ||
+ var uv = document.createElement('script'); | ||
+ uv.type = 'text/javascript'; | ||
+ uv.async = true; | ||
+ uv.src = '//widget.uservoice.com/5rkATbLIm8ClJQeOirOhFg.js'; | ||
+ var s = document.getElementsByTagName('script')[0]; | ||
+ s.parentNode.insertBefore(uv, s) | ||
+ })() | ||
+ </script> | ||
+ | ||
+ <!--[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> | ||
+ <![endif]--> | ||
+ | ||
+ | ||
+ | ||
+ | ||
+ <script src="/scripts/main.js"></script> | ||
+ | ||
+ | ||
+ | ||
+</body> | ||
+ | ||
+</html> |
BIN
transfersh-server/static/images/bitcoin.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10
transfersh-server/static/images/terminal-top.svg
6
transfersh-server/static/images/tor.svg
@@ -0,0 +1,6 @@ | ||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
+<!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
+ | ||
+<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" version="1.1" width="380" height="290" viewBox="0 0 380.00001 289.99999" id="图层_1" xml:space="preserve"><metadata id="metadata2611"><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></dc:title></cc:Work></rdf:RDF></metadata><defs id="defs2609" /> | ||
+ | ||
+<g transform="translate(-58.124001,-45.284749)" id="layer1"><path d="M 50.75,238.46875 C 50.74767,240.51542 50.75067,242.54542 50.75,244.59375 L 58.5625,244.59375 L 58.5625,263.71875 L 66.1875,263.71875 L 66.1875,244.59375 L 73.96875,244.59375 L 73.96875,238.46875 L 50.75,238.46875 z M 115.78125,238.46875 L 115.78125,263.71875 L 123.4375,263.71875 L 123.4375,254.3125 C 125.77166,254.26006 128.12573,254.46829 130.4375,254.0625 C 133.43015,253.61607 135.96405,251.18201 136.46875,248.1875 C 137.01255,245.29331 136.52883,241.81443 134.0625,239.90625 C 131.78087,238.23859 128.83652,238.49113 126.15625,238.46875 L 115.78125,238.46875 z M 181.75,238.46875 L 181.75,243.25 L 188.5625,243.25 L 188.5625,238.46875 L 181.75,238.46875 z M 249.46875,238.46875 L 242.65625,242 L 242.65625,245.4375 L 240.1875,245.4375 L 240.1875,250.46875 L 242.65625,250.46875 L 242.65625,252.65625 C 242.70624,255.21642 242.47421,257.81014 242.9375,260.34375 C 243.05668,261.78997 244.18591,262.93333 245.40625,263.59375 C 248.04288,264.55411 250.90487,264.05409 253.5625,263.4375 L 253.09375,259.25 C 253.23483,258.27274 252.26229,258.9884 251.6875,259 C 250.62775,259.38851 249.37429,258.76458 249.5,257.53125 C 249.44651,255.1859 249.48339,252.81534 249.46875,250.46875 L 253.3125,250.46875 L 253.3125,245.4375 L 249.46875,245.4375 L 249.46875,238.46875 z M 123.4375,243.53125 C 124.93468,243.60074 126.49451,243.29466 127.90625,243.9375 C 129.54076,244.71485 129.75122,247.1681 128.4375,248.34375 C 127.3731,249.32992 125.83906,249.09707 124.5,249.125 C 124.18831,249.03964 123.53064,249.30392 123.4375,249 L 123.4375,243.53125 z M 83.09375,244.875 C 80.20859,244.8275 77.22027,245.81868 75.3125,248.0625 C 73.5522,249.94861 72.88908,252.62887 73.03125,255.15625 C 73.08077,257.68011 74.09823,260.23861 76.125,261.8125 C 78.81274,264.10451 82.64182,264.48951 86,263.84375 C 88.82917,263.28233 91.42955,261.43611 92.59375,258.75 C 94.17919,255.14195 93.6751,250.50727 90.84375,247.65625 C 88.83195,245.61668 85.87085,244.93229 83.09375,244.875 z M 108.375,244.875 C 107.419,244.875 106.58925,245.1415 105.90625,245.6875 C 105.22325,246.0965 104.683,247.05225 104,248.28125 L 104,245.4375 L 97.59375,245.4375 L 97.59375,263.71875 L 104.5625,263.71875 L 104.5625,257.5625 C 104.5625,254.5585 104.817,252.6555 105.5,251.5625 C 106.046,250.7435 106.7315,250.34375 107.6875,250.34375 C 108.0985,250.34375 108.77375,250.602 109.59375,250.875 L 111.65625,245.96875 C 110.42725,245.28575 109.331,244.875 108.375,244.875 z M 151.40625,244.875 C 150.8262,244.87145 150.26044,244.97535 149.71875,245.25 C 148.43645,245.82374 147.76794,247.1133 147.125,248.28125 L 147.125,245.4375 L 140.6875,245.4375 C 140.68517,251.5355 140.68817,257.61908 140.6875,263.71875 L 147.65625,263.71875 L 147.65625,261.75 C 147.6874,259.30832 147.57522,256.87168 147.8125,254.4375 C 147.98367,253.01117 148.27947,251.28613 149.6875,250.5625 C 150.68046,250.02843 151.75878,250.55088 152.71875,250.875 L 154.5,246.5625 C 154.7673,246.12898 154.79825,245.77218 154.1875,245.65625 C 153.3401,245.20326 152.373,244.88092 151.40625,244.875 z M 166.65625,244.875 C 163.81138,244.83015 160.84817,245.7831 158.9375,247.96875 C 157.14601,249.82305 156.26534,252.44241 156.40625,255 C 156.4455,257.60089 157.62013,260.2008 159.6875,261.8125 C 162.43682,264.15178 166.33269,264.50973 169.75,263.78125 C 172.53457,263.1788 175.07375,261.31901 176.1875,258.65625 C 177.7293,255.0256 177.16931,250.3711 174.28125,247.5625 C 172.27329,245.58452 169.38522,244.95613 166.65625,244.875 z M 202.5625,244.875 C 199.65259,244.82633 196.58865,245.83995 194.6875,248.125 C 192.2363,250.95423 191.8563,255.23236 193.28125,258.625 C 194.29372,261.11012 196.45477,263.16353 199.125,263.71875 C 201.64663,264.2679 204.28679,264.24885 206.8125,263.75 C 208.51969,263.42988 210.07293,262.47938 211.1875,261.15625 C 211.6559,260.51927 212.73656,259.43233 212.625,258.90625 L 206.125,258.28125 C 205.51686,258.9536 204.91301,259.72992 203.9375,259.8125 C 202.39982,260.20123 200.57653,259.5439 199.875,258.0625 C 199.79053,257.55239 198.90352,256.05401 199.875,256.21875 L 213.21875,256.21875 C 213.28951,253.4079 212.92796,250.3949 211.125,248.125 C 210.03317,246.80706 208.52604,245.83022 206.84375,245.46875 C 205.44659,245.10894 204.00458,244.9063 202.5625,244.875 z M 226.53125,244.875 C 224.83773,244.94818 223.16268,245.2917 221.59375,245.9375 C 219.74896,246.79555 218.29579,248.44202 217.46875,250.28125 C 216.51712,252.42489 216.57711,254.87891 216.90625,257.15625 C 217.21271,259.53093 218.85626,261.58953 220.90625,262.75 C 222.614,263.77638 224.64841,263.95739 226.59375,264.09375 C 228.87355,264.16831 231.35076,264.0907 233.3125,262.78125 C 235.36706,261.62577 236.70538,259.55319 237.3125,257.3125 L 230.78125,256.5 C 230.52218,257.60301 229.84173,258.55904 228.8125,259.0625 C 227.04278,259.7832 224.53052,259.176 223.875,257.21875 C 223.37182,255.6932 223.44816,254.02326 223.78125,252.46875 C 224.12531,250.7656 225.86092,249.61089 227.5625,249.8125 C 228.93603,249.74484 230.32064,250.72254 230.5,252.125 L 236.90625,251.28125 C 236.30346,248.57745 234.27097,246.20997 231.5625,245.46875 C 229.935,245.02311 228.22477,244.80182 226.53125,244.875 z M 279,244.875 C 276.11458,244.82722 273.09566,245.81887 271.1875,248.0625 C 269.35887,250.01593 268.69715,252.78835 268.90625,255.40625 C 269.06071,258.57942 270.96032,261.61925 273.84375,263 C 276.42708,264.26198 279.47881,264.37106 282.25,263.75 C 285.00789,263.09784 287.47228,261.17924 288.5625,258.53125 C 290.1067,254.84728 289.46037,250.12239 286.4375,247.375 C 284.43673,245.53292 281.64544,244.93556 279,244.875 z M 304.15625,244.875 C 303.5762,244.87145 303.01044,244.97535 302.46875,245.25 C 301.18645,245.82374 300.51794,247.1133 299.875,248.28125 L 299.875,245.4375 L 293.46875,245.4375 C 293.46642,251.5355 293.43817,257.61908 293.4375,263.71875 L 300.40625,263.71875 L 300.40625,261.75 C 300.43736,259.30833 300.32566,256.87171 300.5625,254.4375 C 300.73318,253.01097 301.0296,251.28622 302.4375,250.5625 C 303.4305,250.02827 304.50868,250.55121 305.46875,250.875 L 307.28125,246.5625 C 307.54855,246.12898 307.5795,245.77218 306.96875,245.65625 C 306.12135,245.20326 305.123,244.88092 304.15625,244.875 z M 316.8125,244.875 C 313.944,244.75095 311.24416,246.74626 310.28125,249.40625 C 309.30036,251.99637 309.4085,254.8776 310.0625,257.53125 C 310.82024,260.37628 313.3772,262.72715 316.375,262.875 C 318.02221,262.96074 319.84243,262.61957 321.125,261.53125 C 321.65763,260.95665 322.5173,259.87579 322.25,261.3125 C 322.22656,262.71696 322.44184,264.21836 321.84375,265.53125 C 321.03374,266.81839 319.19006,266.98564 317.90625,266.375 C 316.81858,266.33518 317.11739,264.47551 315.90625,264.71875 L 310.125,264.125 C 309.50347,266.76816 311.20799,269.74611 313.875,270.40625 C 316.60154,271.26237 319.49764,271.16066 322.3125,270.90625 C 324.68811,270.64995 327.16096,269.52501 328.25,267.28125 C 329.27127,265.45631 329.29538,263.34169 329.25,261.3125 L 329.25,245.4375 L 322.8125,245.4375 L 322.8125,248.03125 C 321.50453,246.04856 319.20547,244.77746 316.8125,244.875 z M 181.75,245.4375 C 181.75233,250.47539 181.74933,255.49169 181.75,260.53125 C 181.69711,261.87363 181.89297,263.27272 181.4375,264.5625 C 181.0078,265.66627 179.66675,265.61346 178.71875,265.375 L 177.65625,270.5625 C 179.62508,270.79403 181.57001,271.23211 183.5625,271.0625 C 184.97081,271.00683 186.30112,270.33286 187.28125,269.34375 C 188.42564,267.93617 188.49326,266.01317 188.5625,264.28125 C 188.59678,257.99763 188.55329,251.72134 188.5625,245.4375 L 181.75,245.4375 z M 202.84375,249.125 C 203.95329,249.09172 205.18486,249.55909 205.625,250.65625 C 205.8373,251.2573 206.52558,252.61661 206,252.9375 L 199.4375,252.9375 C 199.56074,251.41532 200.27758,249.69691 201.875,249.25 C 202.18319,249.16417 202.52447,249.12493 202.84375,249.125 z M 83.21875,249.8125 C 84.81783,249.74971 86.12553,251.10433 86.34375,252.625 C 86.59093,254.16964 86.6235,255.82291 86.09375,257.3125 C 85.58517,258.42141 84.51087,259.40806 83.21875,259.34375 C 82.16274,259.497 81.16864,258.69003 80.5625,257.84375 C 79.6954,256.4655 79.76487,254.74716 79.90625,253.1875 C 80.034,251.824 80.79576,250.42045 82.15625,249.96875 C 82.49984,249.84916 82.85603,249.81209 83.21875,249.8125 z M 166.28125,249.8125 L 166.46875,249.8125 L 166.65625,249.8125 C 168.24903,249.69466 169.62717,251.0036 169.875,252.53125 C 170.15533,254.0429 170.15817,255.64356 169.71875,257.125 C 169.25152,258.37261 168.06301,259.46133 166.65625,259.34375 C 165.63697,259.47968 164.64055,258.69308 164.09375,257.84375 C 163.2126,256.42434 163.29992,254.63084 163.46875,253.03125 C 163.62666,251.51818 164.6538,249.94298 166.28125,249.8125 z M 279.125,249.8125 C 280.77107,249.74861 282.03138,251.21111 282.25,252.75 C 282.48768,254.25882 282.48055,255.86623 281.9375,257.3125 C 281.41893,258.40217 280.41521,259.41166 279.125,259.34375 C 278.06475,259.49194 277.01503,258.70161 276.40625,257.84375 C 275.55817,256.45691 275.65901,254.74655 275.78125,253.1875 C 275.89204,251.87317 276.58125,250.51671 277.875,250.03125 C 278.26601,249.87076 278.7039,249.81159 279.125,249.8125 z M 319.28125,250.0625 C 321.08552,249.99674 322.39578,251.8094 322.375,253.5 C 322.55438,255.13402 322.15278,257.16624 320.5,257.90625 C 319.04952,258.5741 317.03402,257.79625 316.6875,256.15625 C 316.17758,254.45034 316.2497,252.45136 317.25,250.9375 C 317.72499,250.33036 318.51318,249.99526 319.28125,250.0625 z M 257.75,256.625 L 257.75,263.71875 L 264.96875,263.71875 L 264.96875,256.625 L 257.75,256.625 z" transform="translate(58.124001,45.28474)" id="path3078" style="fill:#7d4698;fill-opacity:1;stroke:none" /><g id="layer3" style="display:inline"><g id="layer5"><path d="M 264.513,77.977773 L 259.596,97.506774 C 266.561,83.713773 277.623,73.334773 290.325,64.183773 C 281.038,74.972773 272.571,85.762774 267.381,96.551774 C 276.122,84.259773 287.867,77.431773 301.114,72.924773 C 283.496,88.630774 269.51172,105.48405 258.85872,122.41905 L 250.39172,118.73205 C 251.89272,105.21105 257.001,91.362774 264.513,77.977773 z" id="path2554" style="fill:#abcd03;fill-rule:evenodd;stroke:none" /><path d="M 241.90113,115.14152 L 258.01713,121.82746 C 258.01713,125.92546 257.684,138.42449 260.24651,142.11149 C 287.0494,176.63059 282.54,245.82478 254.817,247.59978 C 212.60044,247.59978 196.5,218.92078 196.5,192.56177 C 196.5,168.52477 225.316,152.54577 242.525,138.34277 C 246.895,134.51877 246.13613,126.06752 241.90113,115.14152 z" id="path2534" style="fill:#fffcdb;fill-rule:evenodd;stroke:none" /><path d="M 258.02197,121.58695 L 263.83,124.54977 C 263.284,128.37277 264.103,136.84177 267.926,139.02577 C 284.862,149.54177 300.84,161.01377 307.123,172.48577 C 329.521,212.91178 291.417,250.33178 258.503,246.78078 C 276.394,233.53278 281.584,206.35577 274.892,176.71877 C 272.161,165.10977 267.926,154.59377 260.414,142.71177 C 257.15979,136.87931 258.29597,129.64595 258.02197,121.58695 z" id="path2536" style="fill:#7d4698;fill-rule:evenodd;stroke:none" /></g><g id="layer4" style="display:inline"><path d="M 255.226,120.58877 L 267.244,122.22777 C 263.693,133.97277 274.21,142.16677 277.624,144.07977 C 285.27201,148.31377 292.64701,152.68377 298.52001,158.00977 C 309.58301,168.11577 315.86501,182.31977 315.86501,197.34277 C 315.86501,212.22877 309.03601,226.56877 297.56401,236.12877 C 286.77501,245.14277 271.889,248.96677 257.412,248.96677 C 248.398,248.96677 240.34,248.55777 231.6,245.68877 C 211.661,238.99677 196.774,221.92577 195.545,201.43877 C 194.452,185.45977 198.003,173.30477 210.432,160.60377 C 216.85,153.91177 229.825,146.26377 238.703,140.11777 C 243.074,137.11277 247.717,128.64477 238.839,112.66677 L 240.615,111.30077 L 253.77159,120.1128 L 242.664,115.53477 C 243.62,116.90077 246.215,123.04677 246.762,124.82177 C 247.991,129.87477 247.445,134.79277 246.352,136.97677 C 240.753,147.08377 231.193,149.81477 224.228,155.55077 C 211.936,165.65677 198.552,173.71477 200.054,201.43877 C 200.737,215.09577 211.39,231.75777 227.368,239.54277 C 236.382,243.91377 246.762,245.68877 257.278,246.23477 C 266.701,246.64477 284.72901,241.04477 294.56201,232.85077 C 305.07801,224.11077 310.95101,210.86277 310.95101,197.34277 C 310.95101,183.68477 305.48801,170.71077 295.24501,161.55977 C 289.37201,156.23377 279.676,149.81477 273.667,146.39977 C 267.658,142.98577 260.146,133.42577 262.604,124.27577 z" id="path2538" style="fill:#000000;fill-opacity:1;stroke:none" /><path d="M 251.539,140.80177 C 250.31,147.08477 248.944,158.41977 243.481,162.65377 C 241.159,164.29177 238.837,165.93177 236.379,167.56977 C 226.546,174.26277 216.712,180.54377 212.206,196.65977 C 211.25,200.07477 212.07,203.76177 212.89,207.17577 C 215.348,217.00877 222.313,227.66177 227.776,233.94477 C 227.776,234.21777 228.869,234.90077 228.869,235.17377 C 233.376,240.50077 234.742,242.00277 251.813,245.82577 L 251.403,247.73877 C 241.16,245.00777 232.693,242.54977 227.366,236.40277 C 227.366,236.26677 226.41,235.30977 226.41,235.30977 C 220.674,228.75377 213.708,217.82877 211.114,207.58577 C 210.158,203.48777 209.339,200.34777 210.431,196.11277 C 215.074,179.45177 225.181,172.89577 235.424,165.93077 C 237.746,164.42877 240.477,163.06177 242.662,161.28677 C 246.895,158.14677 249.216,148.58577 251.539,140.80177 z" id="path2540" style="fill:#000000;fill-opacity:1;stroke:none" /><path d="M 255.90625,166.74951 C 256.04325,173.85151 255.35,177.41426 257.125,182.46826 C 258.217,185.47226 261.907,189.56976 263,193.53076 C 264.502,198.85776 266.138,204.72977 266,208.28077 C 266,212.37876 265.74375,220.02326 263.96875,228.21826 C 262.61513,234.98934 259.49552,240.79979 254.25,244.09326 C 248.87673,242.98682 242.56776,241.09805 238.84375,237.90576 C 231.60575,231.62376 225.195,221.11926 224.375,211.96826 C 223.693,204.45727 230.64775,193.37976 240.34375,187.78076 C 248.53775,183.00076 250.44375,177.55301 252.21875,168.81201 C 249.76075,176.46001 247.45225,182.87126 239.53125,186.96826 C 228.05925,192.97726 222.17275,203.06452 222.71875,212.62451 C 223.53775,224.91551 228.46025,233.24401 238.15625,239.93701 C 242.25325,242.80501 249.9075,245.83576 254.6875,246.65576 L 254.6875,246.03076 C 258.31243,245.35188 263.00568,239.39809 265.34375,231.34326 C 267.39275,224.10526 268.2005,214.84126 268.0625,208.96827 C 267.9255,205.55427 266.4195,198.16026 263.6875,191.46826 C 262.1855,187.78126 259.878,184.09451 258.375,181.49951 C 256.738,178.90251 256.72625,173.30451 255.90625,166.74951 z" id="path2542" style="fill:#000000;fill-opacity:1;stroke:none" /><path d="M 255.09375,193.53076 C 255.22975,198.31076 257.14975,204.43527 257.96875,210.71827 C 258.65275,215.36226 258.35575,220.02651 258.21875,224.12451 C 258.0838,228.86774 256.50355,237.36669 254.34375,241.49951 C 252.30702,240.56548 251.51081,239.50029 250.1875,237.78076 C 248.5495,235.45876 247.43675,233.13676 246.34375,230.40576 C 245.52475,228.35676 244.56725,226.01176 244.15625,223.28076 C 243.61025,219.18376 243.76325,212.77426 248.40625,206.21827 C 251.95725,201.02826 252.771,200.63351 254,194.62451 C 252.36,199.95051 251.1375,200.49351 247.3125,204.99952 C 243.0795,209.91652 242.375,217.15876 242.375,223.03076 C 242.375,225.48976 243.3555,228.21801 244.3125,230.81201 C 245.4045,233.54401 246.34175,236.26401 247.84375,238.31201 C 250.10171,241.63283 252.99173,243.52123 254.40625,243.87451 C 254.41563,243.87685 254.42825,243.8723 254.4375,243.87451 C 254.46781,243.88174 254.50238,243.89999 254.53125,243.90576 L 254.53125,243.74951 C 257.18107,240.79514 258.77569,237.86017 259.3125,234.90576 C 259.9955,231.35476 260.1525,227.79601 260.5625,223.56201 C 260.9715,220.01101 260.67475,215.22801 259.71875,210.31202 C 258.35375,204.16602 256.04975,197.89976 255.09375,193.53076 z" id="path2544" style="fill:#000000;fill-opacity:1;stroke:none" /><path d="M 255.499,135.06577 C 255.636,142.16677 256.182,155.41577 258.094,160.60477 C 258.64,162.37977 263.693,170.16477 267.243,179.58777 C 269.702,186.14377 270.248,192.15277 270.658,193.92777 C 272.297,201.71277 270.248,214.82377 267.516,227.25177 C 266.151,233.94377 261.507,242.27477 256.181,245.55277 L 255.089,247.46477 C 258.094,247.32777 265.468,240.08977 268.063,231.07577 C 272.434,215.77977 274.209,208.67777 272.161,191.74277 C 271.888,190.10277 271.205,184.50477 268.61,178.49477 C 264.786,169.34377 259.323,160.60377 258.641,158.82777 C 257.411,155.96077 255.772,143.53277 255.499,135.06577 z" id="path2550" style="fill:#000000;fill-opacity:1;stroke:none" /><path d="M 258.06151,125.35303 C 257.65636,132.65115 257.548,135.33877 258.913,140.66477 C 260.415,146.53777 268.064,155.00477 271.205,164.70177 C 277.214,183.27577 275.712,207.58577 271.341,226.56877 C 269.703,233.25977 261.917,242.95777 254.133,246.09777 L 259.869,247.46377 C 263.01,247.32677 271.067,239.81577 274.209,231.21177 C 279.261,217.69077 280.218,201.57577 278.169,184.64077 C 278.032,183.00177 275.3,168.38877 272.706,162.24277 C 269.018,153.09277 262.462,144.89777 261.78,143.12377 C 260.552,140.11877 257.85349,133.88015 258.06151,125.35303 z" id="path2552" style="fill:#000000;fill-opacity:1;stroke:none" /><rect width="0.550412" height="126.01891" x="253.71959" y="120.21686" id="rect2556" style="fill:#000000;fill-opacity:1;stroke:none" /></g></g><path d="M 99.943,82.074773 H 209.611 C 213.707,82.074773 217.258,85.488773 217.258,89.722773 V 122.08977 C 217.258,126.32377 213.707,129.73877 209.611,129.73877 H 187.077 C 182.023,129.73877 179.838,132.60577 179.838,135.88377 V 241.86378 C 179.838,245.41478 176.97,248.14578 173.556,248.14578 H 136.272 C 132.857,248.14578 130.126,245.41478 130.126,241.86378 V 134.92877 C 130.126,131.65077 127.121,129.73977 124.8,129.73977 H 99.943 C 95.709,129.73977 92.295,126.32477 92.295,122.09077 V 89.722773 C 92.294,85.488773 95.708,82.074773 99.943,82.074773 z" id="path2528" style="fill:#7d4698;fill-opacity:1;fill-rule:evenodd;stroke:none" /><path d="M 381.30687,124.95877 L 381.44287,124.95877 L 391.00287,124.95877 C 394.55387,124.95877 397.42187,127.82677 397.42187,131.24077 L 397.42187,165.93077 C 397.42187,170.43777 397.69487,172.21277 392.23187,172.21277 C 381.44287,172.21277 376.52687,177.94877 376.52687,184.23077 L 376.52687,242.81978 C 376.52687,245.55178 373.93187,247.87278 370.79087,247.87278 L 335.96387,247.87278 C 332.82287,247.87278 330.22787,245.55178 330.22787,242.81978 L 330.22787,176.03577 C 330.19003,174.86136 330.21308,173.12767 330.36487,172.21277 C 332.27687,147.49277 351.6724,127.71491 376.25287,125.23177 C 377.07686,125.14853 379.9923,124.95877 381.30687,124.95877 z" id="path2532" style="fill:#7d4698;fill-opacity:1;fill-rule:evenodd;stroke:none" /><g transform="matrix(1.8025885,0,0,1.8025885,-321.30782,-98.80226)" id="layer7"><path d="M 405.999,129.09724 L 406.03025,129.09724 C 406.32841,129.09725 406.59516,129.09434 406.8115,129.12849 C 407.02174,129.15616 407.18553,129.23538 407.3115,129.31599 C 407.43963,129.38992 407.52656,129.48086 407.59275,129.62849 C 407.65137,129.75929 407.71119,129.95551 407.71775,130.19099 A 0.15001501,0.15001501 0 0 0 407.71775,130.22224 A 0.15001501,0.15001501 0 0 0 407.71775,130.25349 A 0.15001501,0.15001501 0 0 0 407.71775,130.28474 C 407.71088,130.78287 407.57349,131.11169 407.34275,131.28474 C 407.09818,131.46817 406.66419,131.566 406.0615,131.56599 L 405.999,131.56599 L 405.999,129.09724 z M 406.624,126.65974 C 408.58231,126.62221 410.53291,127.79987 411.35006,129.58251 C 412.29552,131.43018 412.03559,133.85822 410.60266,135.39008 C 410.45914,135.5564 410.56057,135.07431 410.53025,134.94099 C 410.50664,134.74608 410.24551,134.76592 410.08634,134.71387 C 409.881,134.71603 409.76226,134.58697 409.66954,134.41849 C 409.14394,133.6864 408.61835,132.95432 408.09275,132.22224 C 408.72543,132.0174 409.31305,131.59055 409.53124,130.9383 C 409.88942,130.02066 409.46377,128.87638 408.55463,128.46433 C 407.61591,127.99371 406.54008,128.16049 405.52668,128.12849 C 404.8379,128.1355 404.13903,128.1149 403.45616,128.13801 C 403.3012,128.29067 403.40346,128.54915 403.374,128.75349 C 403.41326,128.83477 403.44806,128.91528 403.55774,128.91855 C 403.74649,128.94686 403.93525,128.97518 404.124,129.00349 C 404.124,130.89932 404.124,132.79516 404.124,134.69099 C 403.90804,134.75931 403.62646,134.70852 403.46775,134.87849 C 403.47581,135.09914 403.45198,135.33178 403.47727,135.54633 C 403.59608,135.65947 403.79827,135.56664 403.95069,135.59724 C 404.89385,135.59723 405.83724,135.59726 406.78025,135.59724 C 406.91504,135.48472 406.8092,135.27086 406.84275,135.11585 C 406.84896,134.99491 406.87441,134.80931 406.71775,134.78474 C 406.47817,134.75349 406.23858,134.72224 405.999,134.69099 C 405.999,133.97224 405.999,133.25349 405.999,132.53474 C 406.21776,132.46529 406.30282,132.64714 406.40028,132.80568 C 407.0061,133.70495 407.61193,134.60422 408.21775,135.50349 C 408.21476,135.59479 408.35266,135.61735 408.39617,135.60835 C 409.06562,135.58221 409.75839,135.6048 410.4365,135.59724 C 409.88985,136.24245 409.11121,136.66629 408.3242,136.95456 C 406.60757,137.54095 404.59842,137.15879 403.24066,135.94741 C 401.76786,134.65244 401.14017,132.51152 401.6259,130.61776 C 402.14743,128.45188 404.17291,126.70624 406.42465,126.66418 C 406.49107,126.66158 406.55753,126.66012 406.624,126.65974 z M 406.65525,125.59724 C 404.79677,125.5659 402.96344,126.46712 401.78608,127.89152 C 400.49592,129.45674 400.01731,131.64057 400.55953,133.59716 C 401.12596,135.75186 402.9133,137.51703 405.07479,138.05675 C 407.33649,138.64681 409.91104,137.90817 411.43511,136.1134 C 412.42682,135.01714 412.99503,133.54684 412.96775,132.06599 C 412.99313,131.51621 412.93168,130.90548 412.80555,130.34718 C 412.1779,127.58852 409.46307,125.55052 406.65525,125.59724 z" id="text4064" style="font-size:18.31413078px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:center;text-decoration:none;line-height:125%;letter-spacing:0px;word-spacing:0px;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;baseline-shift:baseline;color:#000000;fill:#7d4698;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Liberation Serif;-inkscape-font-specification:Sans" /></g></g></svg> |
5
transfersh-server/static/includes/download-bottom.html
@@ -0,0 +1,5 @@ | ||
+ </div> | ||
+ </div> | ||
+ </div> | ||
+ <br/> | ||
+</section> |
10
transfersh-server/static/includes/download-btn.html
@@ -0,0 +1,10 @@ | ||
+<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> |
6
transfersh-server/static/includes/download-top.html
@@ -0,0 +1,6 @@ | ||
+ <br/> | ||
+ <h2 class="page-title">{{.Filename}}</h2> | ||
+ <h4>type: <b>{{.ContentType}}</b></h4> | ||
+ <h4>size: <b>{{.ContentLength | format "#,###."}}</b> bytes</h4> | ||
+ | ||
+ <a href="{{.Url}}" class="btn-cta btn"> download</i> </a> <br/><br/> |
36
transfersh-server/static/includes/footer.html
@@ -0,0 +1,36 @@ | ||
+<footer> | ||
+ <div class="wrapper"> | ||
+ <div style=""> | ||
+ <a href="bitcoin:164ybRMLbg1dhhWWiUkXtiNr7jUhMKdJqH" label="Bitcoin+Donation" style="word-wrap: break-word;"> | ||
+ <img border="0" src=" /images/bitcoin.png" style="margin: 0 auto;;"> | ||
+ </a> | ||
+ </div> | ||
+ <br/> | ||
+ <br/> | ||
+ <img src="/images/Logo-orange.png" alt="Founded in Holland"> | ||
+ <p>Made with <i class="icon-heart"></i> by <a href="http://blog.dutchcoders.io/" title="Dutch Coders">Dutch Coders</a> | ||
+ </p> | ||
+ </div> | ||
+ | ||
+</footer> | ||
+ | ||
+ | ||
+<a href="https://github.com/you"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> | ||
+ | ||
+ <script> | ||
+ (function() { | ||
+ var uv = document.createElement('script'); | ||
+ uv.type = 'text/javascript'; | ||
+ uv.async = true; | ||
+ uv.src = '//widget.uservoice.com/5rkATbLIm8ClJQeOirOhFg.js'; | ||
+ var s = document.getElementsByTagName('script')[0]; | ||
+ s.parentNode.insertBefore(uv, s) | ||
+ })() | ||
+ </script> | ||
+ | ||
+ <!--[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> | ||
+ <![endif]--> | ||
+ | ||
+ | ||
+ |
15
transfersh-server/static/includes/ga.html
@@ -0,0 +1,15 @@ | ||
+ <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), | ||
+ 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'); | ||
+ </script> |
12
transfersh-server/static/includes/head.html
@@ -0,0 +1,12 @@ | ||
+<head> | ||
+ <meta charset="utf-8"> | ||
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
+ <title>transfer.sh - Easy and fast file sharing from the command-line.</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='//fonts.googleapis.com/css?family=Source+Sans+Pro:100,200,300' rel='stylesheet' type='text/css'> | ||
+ <link href='//fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'> | ||
+ <script src="/scripts/vendor/modernizr.js"></script> | ||
+</head> |
2
transfersh-server/static/includes/js.html
@@ -0,0 +1,2 @@ | ||
+ <script src="/scripts/main.js"></script> | ||
+ |
15
transfersh-server/static/includes/navigation.html
@@ -0,0 +1,15 @@ | ||
+ <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> |
226
transfersh-server/static/index.html
6
transfersh-server/static/scripts/main.js
3 additions,
3 deletions
not shown because the diff is too large. Please use a local Git client to view these changes.
2
transfersh-server/static/styles/main.css
1 addition,
1 deletion
not shown because the diff is too large. Please use a local Git client to view these changes.
48
transfersh-server/storage.go
172
transfersh-server/utils.go
47
transfersh-web/download.audio.html
@@ -0,0 +1,47 @@ | ||
+ | ||
+ | ||
+</html> | ||
+<!doctype html> | ||
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> | ||
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> | ||
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> | ||
+<!--[if gt IE 8]><!--> | ||
+<html class="no-js"> | ||
+<!--<![endif]--> | ||
+ | ||
+include "includes/head.html" | ||
+ | ||
+<body id="download"> | ||
+ | ||
+ include "includes/ga.html" | ||
+ include "includes/navigation.html" | ||
+ | ||
+ | ||
+ <section id="home"> | ||
+ <div class="wrapper"> | ||
+ | ||
+ include "includes/download-top.html" | ||
+ | ||
+ <div class="row animated fadeInDown"> | ||
+ <div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12"> | ||
+ <div class="terminal-top"> | ||
+ | ||
+ </div> | ||
+ <div id="terminal" class="terminal preview-image"> | ||
+ <audio controls> | ||
+ <source src="{{.Url}}" type="{{.ContentType}}"> | ||
+ </audio> | ||
+ </div> | ||
+ </div> | ||
+ </div> | ||
+ <br/> | ||
+ <div> | ||
+ | ||
+ </section> | ||
+ | ||
+ include "includes/footer.html" | ||
+ include "includes/js.html" | ||
+ | ||
+</body> | ||
+ | ||
+</html> |
143
transfersh-web/download.code.html
@@ -0,0 +1,143 @@ | ||
+<!doctype html> | ||
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> | ||
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> | ||
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> | ||
+<!--[if gt IE 8]><!--> | ||
+<html class="no-js"> | ||
+<!--<![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> | ||
+ | ||
+<body id="download"> | ||
+ <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), | ||
+ 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'); | ||
+ </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> | ||
+ | ||
+<section id="home"> | ||
+ <div class="wrapper"> | ||
+ <h2> | ||
+ {{.Filename}}</h2> | ||
+ <a href="{{.Url}}"></a> | ||
+ <div class="row animated fadeInDown"> | ||
+ <div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12"> | ||
+ <div class="terminal-top"> | ||
+ | ||
+ </div> | ||
+ <div id="terminal" class="terminal"> | ||
+ <div id="code"></div> | ||
+ </div> | ||
+ | ||
+ | ||
+ | ||
+ </div> | ||
+ | ||
+ </div> | ||
+ | ||
+ <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> | ||
+ | ||
+ | ||
+ <script> | ||
+ (function() { | ||
+ var uv = document.createElement('script'); | ||
+ uv.type = 'text/javascript'; | ||
+ uv.async = true; | ||
+ uv.src = '//widget.uservoice.com/5rkATbLIm8ClJQeOirOhFg.js'; | ||
+ var s = document.getElementsByTagName('script')[0]; | ||
+ s.parentNode.insertBefore(uv, s) | ||
+ })() | ||
+ </script> | ||
+ | ||
+ <!--[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> | ||
+ <![endif]--> | ||
+ | ||
+ <script> | ||
+ (function(b, o, i, l, e, r) { | ||
+ b.GoogleAnalyticsObject = l; | ||
+ b[l] || (b[l] = | ||
+ function() { | ||
+ (b[l].q = b[l].q || []).push(arguments) | ||
+ }); | ||
+ b[l].l = +new Date; | ||
+ e = o.createElement(i); | ||
+ r = o.getElementsByTagName(i)[0]; | ||
+ e.src = '//www.google-analytics.com/analytics.js'; | ||
+ r.parentNode.insertBefore(e, r) | ||
+ }(window, document, 'script', 'ga')); | ||
+ ga('create', 'UA-40833733-1', 'transfer.sh'); | ||
+ ga('send', 'pageview'); | ||
+ </script> | ||
+ | ||
+ <!-- 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> | ||
+ | ||
+ var text = "# Markdown *works*."; | ||
+ | ||
+ var converter = new Showdown.converter(); | ||
+ var html = converter.makeHtml(text); | ||
+ $('#md-preview').append(html); | ||
+ | ||
+ </script> | ||
+ | ||
+ | ||
+</body> | ||
+ | ||
+</html> |
31
transfersh-web/download.html
@@ -0,0 +1,31 @@ | ||
+<!doctype html> | ||
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> | ||
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> | ||
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> | ||
+<!--[if gt IE 8]><!--> | ||
+<html class="no-js"> | ||
+<!--<![endif]--> | ||
+ | ||
+include "includes/head.html" | ||
+ | ||
+<body id="download"> | ||
+ | ||
+ include "includes/ga.html" | ||
+ include "includes/navigation.html" | ||
+ | ||
+ | ||
+<section id="home"> | ||
+ <div class="wrapper"> | ||
+ | ||
+ include "includes/download-top.html" | ||
+ </div> | ||
+</section> | ||
+ | ||
+ include "includes/footer.html" | ||
+ include "includes/js.html" | ||
+ | ||
+ | ||
+ | ||
+</body> | ||
+ | ||
+</html> |
41
transfersh-web/download.image.html
@@ -0,0 +1,41 @@ | ||
+<!doctype html> | ||
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> | ||
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> | ||
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> | ||
+<!--[if gt IE 8]><!--> | ||
+<html class="no-js"> | ||
+<!--<![endif]--> | ||
+ | ||
+include "includes/head.html" | ||
+ | ||
+<body id="download"> | ||
+ | ||
+ include "includes/ga.html" | ||
+ include "includes/navigation.html" | ||
+ | ||
+ <section id="home"> | ||
+ <div class="wrapper"> | ||
+ | ||
+ include "includes/download-top.html" | ||
+ | ||
+ <div class="row animated fadeInDown"> | ||
+ <div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12"> | ||
+ <div class="terminal-top"> | ||
+ | ||
+ </div> | ||
+ <div id="terminal" class="terminal preview-image"> | ||
+ <img src="{{.Url}}" alt=""> | ||
+ </div> | ||
+ </div> | ||
+ </div> | ||
+ <br/> | ||
+ <div> | ||
+ <div> | ||
+ </section> | ||
+ | ||
+ include "includes/footer.html" | ||
+ include "includes/js.html" | ||
+ | ||
+</body> | ||
+ | ||
+</html> |
39
transfersh-web/download.markdown.html
@@ -0,0 +1,39 @@ | ||
+<!doctype html> | ||
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> | ||
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> | ||
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> | ||
+<!--[if gt IE 8]><!--> | ||
+<html class="no-js"> | ||
+<!--<![endif]--> | ||
+ | ||
+include "includes/head.html" | ||
+ | ||
+<body id="download"> | ||
+ | ||
+ include "includes/ga.html" | ||
+ include "includes/navigation.html" | ||
+ | ||
+<section id="home"> | ||
+ <div class="wrapper"> | ||
+ | ||
+ include "includes/download-top.html" | ||
+ | ||
+ <div class="row animated fadeInDown"> | ||
+ <div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12"> | ||
+ <div class="terminal-top"> | ||
+ </div> | ||
+ <div id="terminal" class="terminal"> | ||
+ <div id="md-preview">{{.Content}}</div> | ||
+ </div> | ||
+ </div> | ||
+ </div> | ||
+ <br/> | ||
+ | ||
+</section> | ||
+ | ||
+ | ||
+ include "includes/footer.html" | ||
+ include "includes/js.html" | ||
+</body> | ||
+ | ||
+</html> |
44
transfersh-web/download.video.html
@@ -0,0 +1,44 @@ | ||
+<!doctype html> | ||
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> | ||
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> | ||
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> | ||
+<!--[if gt IE 8]><!--> | ||
+<html class="no-js"> | ||
+<!--<![endif]--> | ||
+ | ||
+include "includes/head.html" | ||
+ | ||
+<body id="download"> | ||
+ | ||
+ include "includes/ga.html" | ||
+ include "includes/navigation.html" | ||
+ | ||
+ | ||
+ <section id="home"> | ||
+ <div class="wrapper"> | ||
+ | ||
+ include "includes/download-top.html" | ||
+ | ||
+ <div class="row animated fadeInDown"> | ||
+ <div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12"> | ||
+ <div class="terminal-top"> | ||
+ | ||
+ </div> | ||
+ <div id="terminal" class="terminal preview-image"> | ||
+ <video controls> | ||
+ <source src="{{.Url}}" type="{{.ContentType}}"> | ||
+ </video> | ||
+ </div> | ||
+ </div> | ||
+ </div> | ||
+ <br/> | ||
+ <div> | ||
+ | ||
+ </section> | ||
+ | ||
+ include "includes/footer.html" | ||
+ include "includes/js.html" | ||
+ | ||
+</body> | ||
+ | ||
+</html> |
BIN
transfersh-web/images/bitcoin.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10
transfersh-web/images/terminal-top.svg
6
transfersh-web/images/tor.svg
@@ -0,0 +1,6 @@ | ||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
+<!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
+ | ||
+<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" version="1.1" width="380" height="290" viewBox="0 0 380.00001 289.99999" id="图层_1" xml:space="preserve"><metadata id="metadata2611"><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></dc:title></cc:Work></rdf:RDF></metadata><defs id="defs2609" /> | ||
+ | ||
+<g transform="translate(-58.124001,-45.284749)" id="layer1"><path d="M 50.75,238.46875 C 50.74767,240.51542 50.75067,242.54542 50.75,244.59375 L 58.5625,244.59375 L 58.5625,263.71875 L 66.1875,263.71875 L 66.1875,244.59375 L 73.96875,244.59375 L 73.96875,238.46875 L 50.75,238.46875 z M 115.78125,238.46875 L 115.78125,263.71875 L 123.4375,263.71875 L 123.4375,254.3125 C 125.77166,254.26006 128.12573,254.46829 130.4375,254.0625 C 133.43015,253.61607 135.96405,251.18201 136.46875,248.1875 C 137.01255,245.29331 136.52883,241.81443 134.0625,239.90625 C 131.78087,238.23859 128.83652,238.49113 126.15625,238.46875 L 115.78125,238.46875 z M 181.75,238.46875 L 181.75,243.25 L 188.5625,243.25 L 188.5625,238.46875 L 181.75,238.46875 z M 249.46875,238.46875 L 242.65625,242 L 242.65625,245.4375 L 240.1875,245.4375 L 240.1875,250.46875 L 242.65625,250.46875 L 242.65625,252.65625 C 242.70624,255.21642 242.47421,257.81014 242.9375,260.34375 C 243.05668,261.78997 244.18591,262.93333 245.40625,263.59375 C 248.04288,264.55411 250.90487,264.05409 253.5625,263.4375 L 253.09375,259.25 C 253.23483,258.27274 252.26229,258.9884 251.6875,259 C 250.62775,259.38851 249.37429,258.76458 249.5,257.53125 C 249.44651,255.1859 249.48339,252.81534 249.46875,250.46875 L 253.3125,250.46875 L 253.3125,245.4375 L 249.46875,245.4375 L 249.46875,238.46875 z M 123.4375,243.53125 C 124.93468,243.60074 126.49451,243.29466 127.90625,243.9375 C 129.54076,244.71485 129.75122,247.1681 128.4375,248.34375 C 127.3731,249.32992 125.83906,249.09707 124.5,249.125 C 124.18831,249.03964 123.53064,249.30392 123.4375,249 L 123.4375,243.53125 z M 83.09375,244.875 C 80.20859,244.8275 77.22027,245.81868 75.3125,248.0625 C 73.5522,249.94861 72.88908,252.62887 73.03125,255.15625 C 73.08077,257.68011 74.09823,260.23861 76.125,261.8125 C 78.81274,264.10451 82.64182,264.48951 86,263.84375 C 88.82917,263.28233 91.42955,261.43611 92.59375,258.75 C 94.17919,255.14195 93.6751,250.50727 90.84375,247.65625 C 88.83195,245.61668 85.87085,244.93229 83.09375,244.875 z M 108.375,244.875 C 107.419,244.875 106.58925,245.1415 105.90625,245.6875 C 105.22325,246.0965 104.683,247.05225 104,248.28125 L 104,245.4375 L 97.59375,245.4375 L 97.59375,263.71875 L 104.5625,263.71875 L 104.5625,257.5625 C 104.5625,254.5585 104.817,252.6555 105.5,251.5625 C 106.046,250.7435 106.7315,250.34375 107.6875,250.34375 C 108.0985,250.34375 108.77375,250.602 109.59375,250.875 L 111.65625,245.96875 C 110.42725,245.28575 109.331,244.875 108.375,244.875 z M 151.40625,244.875 C 150.8262,244.87145 150.26044,244.97535 149.71875,245.25 C 148.43645,245.82374 147.76794,247.1133 147.125,248.28125 L 147.125,245.4375 L 140.6875,245.4375 C 140.68517,251.5355 140.68817,257.61908 140.6875,263.71875 L 147.65625,263.71875 L 147.65625,261.75 C 147.6874,259.30832 147.57522,256.87168 147.8125,254.4375 C 147.98367,253.01117 148.27947,251.28613 149.6875,250.5625 C 150.68046,250.02843 151.75878,250.55088 152.71875,250.875 L 154.5,246.5625 C 154.7673,246.12898 154.79825,245.77218 154.1875,245.65625 C 153.3401,245.20326 152.373,244.88092 151.40625,244.875 z M 166.65625,244.875 C 163.81138,244.83015 160.84817,245.7831 158.9375,247.96875 C 157.14601,249.82305 156.26534,252.44241 156.40625,255 C 156.4455,257.60089 157.62013,260.2008 159.6875,261.8125 C 162.43682,264.15178 166.33269,264.50973 169.75,263.78125 C 172.53457,263.1788 175.07375,261.31901 176.1875,258.65625 C 177.7293,255.0256 177.16931,250.3711 174.28125,247.5625 C 172.27329,245.58452 169.38522,244.95613 166.65625,244.875 z M 202.5625,244.875 C 199.65259,244.82633 196.58865,245.83995 194.6875,248.125 C 192.2363,250.95423 191.8563,255.23236 193.28125,258.625 C 194.29372,261.11012 196.45477,263.16353 199.125,263.71875 C 201.64663,264.2679 204.28679,264.24885 206.8125,263.75 C 208.51969,263.42988 210.07293,262.47938 211.1875,261.15625 C 211.6559,260.51927 212.73656,259.43233 212.625,258.90625 L 206.125,258.28125 C 205.51686,258.9536 204.91301,259.72992 203.9375,259.8125 C 202.39982,260.20123 200.57653,259.5439 199.875,258.0625 C 199.79053,257.55239 198.90352,256.05401 199.875,256.21875 L 213.21875,256.21875 C 213.28951,253.4079 212.92796,250.3949 211.125,248.125 C 210.03317,246.80706 208.52604,245.83022 206.84375,245.46875 C 205.44659,245.10894 204.00458,244.9063 202.5625,244.875 z M 226.53125,244.875 C 224.83773,244.94818 223.16268,245.2917 221.59375,245.9375 C 219.74896,246.79555 218.29579,248.44202 217.46875,250.28125 C 216.51712,252.42489 216.57711,254.87891 216.90625,257.15625 C 217.21271,259.53093 218.85626,261.58953 220.90625,262.75 C 222.614,263.77638 224.64841,263.95739 226.59375,264.09375 C 228.87355,264.16831 231.35076,264.0907 233.3125,262.78125 C 235.36706,261.62577 236.70538,259.55319 237.3125,257.3125 L 230.78125,256.5 C 230.52218,257.60301 229.84173,258.55904 228.8125,259.0625 C 227.04278,259.7832 224.53052,259.176 223.875,257.21875 C 223.37182,255.6932 223.44816,254.02326 223.78125,252.46875 C 224.12531,250.7656 225.86092,249.61089 227.5625,249.8125 C 228.93603,249.74484 230.32064,250.72254 230.5,252.125 L 236.90625,251.28125 C 236.30346,248.57745 234.27097,246.20997 231.5625,245.46875 C 229.935,245.02311 228.22477,244.80182 226.53125,244.875 z M 279,244.875 C 276.11458,244.82722 273.09566,245.81887 271.1875,248.0625 C 269.35887,250.01593 268.69715,252.78835 268.90625,255.40625 C 269.06071,258.57942 270.96032,261.61925 273.84375,263 C 276.42708,264.26198 279.47881,264.37106 282.25,263.75 C 285.00789,263.09784 287.47228,261.17924 288.5625,258.53125 C 290.1067,254.84728 289.46037,250.12239 286.4375,247.375 C 284.43673,245.53292 281.64544,244.93556 279,244.875 z M 304.15625,244.875 C 303.5762,244.87145 303.01044,244.97535 302.46875,245.25 C 301.18645,245.82374 300.51794,247.1133 299.875,248.28125 L 299.875,245.4375 L 293.46875,245.4375 C 293.46642,251.5355 293.43817,257.61908 293.4375,263.71875 L 300.40625,263.71875 L 300.40625,261.75 C 300.43736,259.30833 300.32566,256.87171 300.5625,254.4375 C 300.73318,253.01097 301.0296,251.28622 302.4375,250.5625 C 303.4305,250.02827 304.50868,250.55121 305.46875,250.875 L 307.28125,246.5625 C 307.54855,246.12898 307.5795,245.77218 306.96875,245.65625 C 306.12135,245.20326 305.123,244.88092 304.15625,244.875 z M 316.8125,244.875 C 313.944,244.75095 311.24416,246.74626 310.28125,249.40625 C 309.30036,251.99637 309.4085,254.8776 310.0625,257.53125 C 310.82024,260.37628 313.3772,262.72715 316.375,262.875 C 318.02221,262.96074 319.84243,262.61957 321.125,261.53125 C 321.65763,260.95665 322.5173,259.87579 322.25,261.3125 C 322.22656,262.71696 322.44184,264.21836 321.84375,265.53125 C 321.03374,266.81839 319.19006,266.98564 317.90625,266.375 C 316.81858,266.33518 317.11739,264.47551 315.90625,264.71875 L 310.125,264.125 C 309.50347,266.76816 311.20799,269.74611 313.875,270.40625 C 316.60154,271.26237 319.49764,271.16066 322.3125,270.90625 C 324.68811,270.64995 327.16096,269.52501 328.25,267.28125 C 329.27127,265.45631 329.29538,263.34169 329.25,261.3125 L 329.25,245.4375 L 322.8125,245.4375 L 322.8125,248.03125 C 321.50453,246.04856 319.20547,244.77746 316.8125,244.875 z M 181.75,245.4375 C 181.75233,250.47539 181.74933,255.49169 181.75,260.53125 C 181.69711,261.87363 181.89297,263.27272 181.4375,264.5625 C 181.0078,265.66627 179.66675,265.61346 178.71875,265.375 L 177.65625,270.5625 C 179.62508,270.79403 181.57001,271.23211 183.5625,271.0625 C 184.97081,271.00683 186.30112,270.33286 187.28125,269.34375 C 188.42564,267.93617 188.49326,266.01317 188.5625,264.28125 C 188.59678,257.99763 188.55329,251.72134 188.5625,245.4375 L 181.75,245.4375 z M 202.84375,249.125 C 203.95329,249.09172 205.18486,249.55909 205.625,250.65625 C 205.8373,251.2573 206.52558,252.61661 206,252.9375 L 199.4375,252.9375 C 199.56074,251.41532 200.27758,249.69691 201.875,249.25 C 202.18319,249.16417 202.52447,249.12493 202.84375,249.125 z M 83.21875,249.8125 C 84.81783,249.74971 86.12553,251.10433 86.34375,252.625 C 86.59093,254.16964 86.6235,255.82291 86.09375,257.3125 C 85.58517,258.42141 84.51087,259.40806 83.21875,259.34375 C 82.16274,259.497 81.16864,258.69003 80.5625,257.84375 C 79.6954,256.4655 79.76487,254.74716 79.90625,253.1875 C 80.034,251.824 80.79576,250.42045 82.15625,249.96875 C 82.49984,249.84916 82.85603,249.81209 83.21875,249.8125 z M 166.28125,249.8125 L 166.46875,249.8125 L 166.65625,249.8125 C 168.24903,249.69466 169.62717,251.0036 169.875,252.53125 C 170.15533,254.0429 170.15817,255.64356 169.71875,257.125 C 169.25152,258.37261 168.06301,259.46133 166.65625,259.34375 C 165.63697,259.47968 164.64055,258.69308 164.09375,257.84375 C 163.2126,256.42434 163.29992,254.63084 163.46875,253.03125 C 163.62666,251.51818 164.6538,249.94298 166.28125,249.8125 z M 279.125,249.8125 C 280.77107,249.74861 282.03138,251.21111 282.25,252.75 C 282.48768,254.25882 282.48055,255.86623 281.9375,257.3125 C 281.41893,258.40217 280.41521,259.41166 279.125,259.34375 C 278.06475,259.49194 277.01503,258.70161 276.40625,257.84375 C 275.55817,256.45691 275.65901,254.74655 275.78125,253.1875 C 275.89204,251.87317 276.58125,250.51671 277.875,250.03125 C 278.26601,249.87076 278.7039,249.81159 279.125,249.8125 z M 319.28125,250.0625 C 321.08552,249.99674 322.39578,251.8094 322.375,253.5 C 322.55438,255.13402 322.15278,257.16624 320.5,257.90625 C 319.04952,258.5741 317.03402,257.79625 316.6875,256.15625 C 316.17758,254.45034 316.2497,252.45136 317.25,250.9375 C 317.72499,250.33036 318.51318,249.99526 319.28125,250.0625 z M 257.75,256.625 L 257.75,263.71875 L 264.96875,263.71875 L 264.96875,256.625 L 257.75,256.625 z" transform="translate(58.124001,45.28474)" id="path3078" style="fill:#7d4698;fill-opacity:1;stroke:none" /><g id="layer3" style="display:inline"><g id="layer5"><path d="M 264.513,77.977773 L 259.596,97.506774 C 266.561,83.713773 277.623,73.334773 290.325,64.183773 C 281.038,74.972773 272.571,85.762774 267.381,96.551774 C 276.122,84.259773 287.867,77.431773 301.114,72.924773 C 283.496,88.630774 269.51172,105.48405 258.85872,122.41905 L 250.39172,118.73205 C 251.89272,105.21105 257.001,91.362774 264.513,77.977773 z" id="path2554" style="fill:#abcd03;fill-rule:evenodd;stroke:none" /><path d="M 241.90113,115.14152 L 258.01713,121.82746 C 258.01713,125.92546 257.684,138.42449 260.24651,142.11149 C 287.0494,176.63059 282.54,245.82478 254.817,247.59978 C 212.60044,247.59978 196.5,218.92078 196.5,192.56177 C 196.5,168.52477 225.316,152.54577 242.525,138.34277 C 246.895,134.51877 246.13613,126.06752 241.90113,115.14152 z" id="path2534" style="fill:#fffcdb;fill-rule:evenodd;stroke:none" /><path d="M 258.02197,121.58695 L 263.83,124.54977 C 263.284,128.37277 264.103,136.84177 267.926,139.02577 C 284.862,149.54177 300.84,161.01377 307.123,172.48577 C 329.521,212.91178 291.417,250.33178 258.503,246.78078 C 276.394,233.53278 281.584,206.35577 274.892,176.71877 C 272.161,165.10977 267.926,154.59377 260.414,142.71177 C 257.15979,136.87931 258.29597,129.64595 258.02197,121.58695 z" id="path2536" style="fill:#7d4698;fill-rule:evenodd;stroke:none" /></g><g id="layer4" style="display:inline"><path d="M 255.226,120.58877 L 267.244,122.22777 C 263.693,133.97277 274.21,142.16677 277.624,144.07977 C 285.27201,148.31377 292.64701,152.68377 298.52001,158.00977 C 309.58301,168.11577 315.86501,182.31977 315.86501,197.34277 C 315.86501,212.22877 309.03601,226.56877 297.56401,236.12877 C 286.77501,245.14277 271.889,248.96677 257.412,248.96677 C 248.398,248.96677 240.34,248.55777 231.6,245.68877 C 211.661,238.99677 196.774,221.92577 195.545,201.43877 C 194.452,185.45977 198.003,173.30477 210.432,160.60377 C 216.85,153.91177 229.825,146.26377 238.703,140.11777 C 243.074,137.11277 247.717,128.64477 238.839,112.66677 L 240.615,111.30077 L 253.77159,120.1128 L 242.664,115.53477 C 243.62,116.90077 246.215,123.04677 246.762,124.82177 C 247.991,129.87477 247.445,134.79277 246.352,136.97677 C 240.753,147.08377 231.193,149.81477 224.228,155.55077 C 211.936,165.65677 198.552,173.71477 200.054,201.43877 C 200.737,215.09577 211.39,231.75777 227.368,239.54277 C 236.382,243.91377 246.762,245.68877 257.278,246.23477 C 266.701,246.64477 284.72901,241.04477 294.56201,232.85077 C 305.07801,224.11077 310.95101,210.86277 310.95101,197.34277 C 310.95101,183.68477 305.48801,170.71077 295.24501,161.55977 C 289.37201,156.23377 279.676,149.81477 273.667,146.39977 C 267.658,142.98577 260.146,133.42577 262.604,124.27577 z" id="path2538" style="fill:#000000;fill-opacity:1;stroke:none" /><path d="M 251.539,140.80177 C 250.31,147.08477 248.944,158.41977 243.481,162.65377 C 241.159,164.29177 238.837,165.93177 236.379,167.56977 C 226.546,174.26277 216.712,180.54377 212.206,196.65977 C 211.25,200.07477 212.07,203.76177 212.89,207.17577 C 215.348,217.00877 222.313,227.66177 227.776,233.94477 C 227.776,234.21777 228.869,234.90077 228.869,235.17377 C 233.376,240.50077 234.742,242.00277 251.813,245.82577 L 251.403,247.73877 C 241.16,245.00777 232.693,242.54977 227.366,236.40277 C 227.366,236.26677 226.41,235.30977 226.41,235.30977 C 220.674,228.75377 213.708,217.82877 211.114,207.58577 C 210.158,203.48777 209.339,200.34777 210.431,196.11277 C 215.074,179.45177 225.181,172.89577 235.424,165.93077 C 237.746,164.42877 240.477,163.06177 242.662,161.28677 C 246.895,158.14677 249.216,148.58577 251.539,140.80177 z" id="path2540" style="fill:#000000;fill-opacity:1;stroke:none" /><path d="M 255.90625,166.74951 C 256.04325,173.85151 255.35,177.41426 257.125,182.46826 C 258.217,185.47226 261.907,189.56976 263,193.53076 C 264.502,198.85776 266.138,204.72977 266,208.28077 C 266,212.37876 265.74375,220.02326 263.96875,228.21826 C 262.61513,234.98934 259.49552,240.79979 254.25,244.09326 C 248.87673,242.98682 242.56776,241.09805 238.84375,237.90576 C 231.60575,231.62376 225.195,221.11926 224.375,211.96826 C 223.693,204.45727 230.64775,193.37976 240.34375,187.78076 C 248.53775,183.00076 250.44375,177.55301 252.21875,168.81201 C 249.76075,176.46001 247.45225,182.87126 239.53125,186.96826 C 228.05925,192.97726 222.17275,203.06452 222.71875,212.62451 C 223.53775,224.91551 228.46025,233.24401 238.15625,239.93701 C 242.25325,242.80501 249.9075,245.83576 254.6875,246.65576 L 254.6875,246.03076 C 258.31243,245.35188 263.00568,239.39809 265.34375,231.34326 C 267.39275,224.10526 268.2005,214.84126 268.0625,208.96827 C 267.9255,205.55427 266.4195,198.16026 263.6875,191.46826 C 262.1855,187.78126 259.878,184.09451 258.375,181.49951 C 256.738,178.90251 256.72625,173.30451 255.90625,166.74951 z" id="path2542" style="fill:#000000;fill-opacity:1;stroke:none" /><path d="M 255.09375,193.53076 C 255.22975,198.31076 257.14975,204.43527 257.96875,210.71827 C 258.65275,215.36226 258.35575,220.02651 258.21875,224.12451 C 258.0838,228.86774 256.50355,237.36669 254.34375,241.49951 C 252.30702,240.56548 251.51081,239.50029 250.1875,237.78076 C 248.5495,235.45876 247.43675,233.13676 246.34375,230.40576 C 245.52475,228.35676 244.56725,226.01176 244.15625,223.28076 C 243.61025,219.18376 243.76325,212.77426 248.40625,206.21827 C 251.95725,201.02826 252.771,200.63351 254,194.62451 C 252.36,199.95051 251.1375,200.49351 247.3125,204.99952 C 243.0795,209.91652 242.375,217.15876 242.375,223.03076 C 242.375,225.48976 243.3555,228.21801 244.3125,230.81201 C 245.4045,233.54401 246.34175,236.26401 247.84375,238.31201 C 250.10171,241.63283 252.99173,243.52123 254.40625,243.87451 C 254.41563,243.87685 254.42825,243.8723 254.4375,243.87451 C 254.46781,243.88174 254.50238,243.89999 254.53125,243.90576 L 254.53125,243.74951 C 257.18107,240.79514 258.77569,237.86017 259.3125,234.90576 C 259.9955,231.35476 260.1525,227.79601 260.5625,223.56201 C 260.9715,220.01101 260.67475,215.22801 259.71875,210.31202 C 258.35375,204.16602 256.04975,197.89976 255.09375,193.53076 z" id="path2544" style="fill:#000000;fill-opacity:1;stroke:none" /><path d="M 255.499,135.06577 C 255.636,142.16677 256.182,155.41577 258.094,160.60477 C 258.64,162.37977 263.693,170.16477 267.243,179.58777 C 269.702,186.14377 270.248,192.15277 270.658,193.92777 C 272.297,201.71277 270.248,214.82377 267.516,227.25177 C 266.151,233.94377 261.507,242.27477 256.181,245.55277 L 255.089,247.46477 C 258.094,247.32777 265.468,240.08977 268.063,231.07577 C 272.434,215.77977 274.209,208.67777 272.161,191.74277 C 271.888,190.10277 271.205,184.50477 268.61,178.49477 C 264.786,169.34377 259.323,160.60377 258.641,158.82777 C 257.411,155.96077 255.772,143.53277 255.499,135.06577 z" id="path2550" style="fill:#000000;fill-opacity:1;stroke:none" /><path d="M 258.06151,125.35303 C 257.65636,132.65115 257.548,135.33877 258.913,140.66477 C 260.415,146.53777 268.064,155.00477 271.205,164.70177 C 277.214,183.27577 275.712,207.58577 271.341,226.56877 C 269.703,233.25977 261.917,242.95777 254.133,246.09777 L 259.869,247.46377 C 263.01,247.32677 271.067,239.81577 274.209,231.21177 C 279.261,217.69077 280.218,201.57577 278.169,184.64077 C 278.032,183.00177 275.3,168.38877 272.706,162.24277 C 269.018,153.09277 262.462,144.89777 261.78,143.12377 C 260.552,140.11877 257.85349,133.88015 258.06151,125.35303 z" id="path2552" style="fill:#000000;fill-opacity:1;stroke:none" /><rect width="0.550412" height="126.01891" x="253.71959" y="120.21686" id="rect2556" style="fill:#000000;fill-opacity:1;stroke:none" /></g></g><path d="M 99.943,82.074773 H 209.611 C 213.707,82.074773 217.258,85.488773 217.258,89.722773 V 122.08977 C 217.258,126.32377 213.707,129.73877 209.611,129.73877 H 187.077 C 182.023,129.73877 179.838,132.60577 179.838,135.88377 V 241.86378 C 179.838,245.41478 176.97,248.14578 173.556,248.14578 H 136.272 C 132.857,248.14578 130.126,245.41478 130.126,241.86378 V 134.92877 C 130.126,131.65077 127.121,129.73977 124.8,129.73977 H 99.943 C 95.709,129.73977 92.295,126.32477 92.295,122.09077 V 89.722773 C 92.294,85.488773 95.708,82.074773 99.943,82.074773 z" id="path2528" style="fill:#7d4698;fill-opacity:1;fill-rule:evenodd;stroke:none" /><path d="M 381.30687,124.95877 L 381.44287,124.95877 L 391.00287,124.95877 C 394.55387,124.95877 397.42187,127.82677 397.42187,131.24077 L 397.42187,165.93077 C 397.42187,170.43777 397.69487,172.21277 392.23187,172.21277 C 381.44287,172.21277 376.52687,177.94877 376.52687,184.23077 L 376.52687,242.81978 C 376.52687,245.55178 373.93187,247.87278 370.79087,247.87278 L 335.96387,247.87278 C 332.82287,247.87278 330.22787,245.55178 330.22787,242.81978 L 330.22787,176.03577 C 330.19003,174.86136 330.21308,173.12767 330.36487,172.21277 C 332.27687,147.49277 351.6724,127.71491 376.25287,125.23177 C 377.07686,125.14853 379.9923,124.95877 381.30687,124.95877 z" id="path2532" style="fill:#7d4698;fill-opacity:1;fill-rule:evenodd;stroke:none" /><g transform="matrix(1.8025885,0,0,1.8025885,-321.30782,-98.80226)" id="layer7"><path d="M 405.999,129.09724 L 406.03025,129.09724 C 406.32841,129.09725 406.59516,129.09434 406.8115,129.12849 C 407.02174,129.15616 407.18553,129.23538 407.3115,129.31599 C 407.43963,129.38992 407.52656,129.48086 407.59275,129.62849 C 407.65137,129.75929 407.71119,129.95551 407.71775,130.19099 A 0.15001501,0.15001501 0 0 0 407.71775,130.22224 A 0.15001501,0.15001501 0 0 0 407.71775,130.25349 A 0.15001501,0.15001501 0 0 0 407.71775,130.28474 C 407.71088,130.78287 407.57349,131.11169 407.34275,131.28474 C 407.09818,131.46817 406.66419,131.566 406.0615,131.56599 L 405.999,131.56599 L 405.999,129.09724 z M 406.624,126.65974 C 408.58231,126.62221 410.53291,127.79987 411.35006,129.58251 C 412.29552,131.43018 412.03559,133.85822 410.60266,135.39008 C 410.45914,135.5564 410.56057,135.07431 410.53025,134.94099 C 410.50664,134.74608 410.24551,134.76592 410.08634,134.71387 C 409.881,134.71603 409.76226,134.58697 409.66954,134.41849 C 409.14394,133.6864 408.61835,132.95432 408.09275,132.22224 C 408.72543,132.0174 409.31305,131.59055 409.53124,130.9383 C 409.88942,130.02066 409.46377,128.87638 408.55463,128.46433 C 407.61591,127.99371 406.54008,128.16049 405.52668,128.12849 C 404.8379,128.1355 404.13903,128.1149 403.45616,128.13801 C 403.3012,128.29067 403.40346,128.54915 403.374,128.75349 C 403.41326,128.83477 403.44806,128.91528 403.55774,128.91855 C 403.74649,128.94686 403.93525,128.97518 404.124,129.00349 C 404.124,130.89932 404.124,132.79516 404.124,134.69099 C 403.90804,134.75931 403.62646,134.70852 403.46775,134.87849 C 403.47581,135.09914 403.45198,135.33178 403.47727,135.54633 C 403.59608,135.65947 403.79827,135.56664 403.95069,135.59724 C 404.89385,135.59723 405.83724,135.59726 406.78025,135.59724 C 406.91504,135.48472 406.8092,135.27086 406.84275,135.11585 C 406.84896,134.99491 406.87441,134.80931 406.71775,134.78474 C 406.47817,134.75349 406.23858,134.72224 405.999,134.69099 C 405.999,133.97224 405.999,133.25349 405.999,132.53474 C 406.21776,132.46529 406.30282,132.64714 406.40028,132.80568 C 407.0061,133.70495 407.61193,134.60422 408.21775,135.50349 C 408.21476,135.59479 408.35266,135.61735 408.39617,135.60835 C 409.06562,135.58221 409.75839,135.6048 410.4365,135.59724 C 409.88985,136.24245 409.11121,136.66629 408.3242,136.95456 C 406.60757,137.54095 404.59842,137.15879 403.24066,135.94741 C 401.76786,134.65244 401.14017,132.51152 401.6259,130.61776 C 402.14743,128.45188 404.17291,126.70624 406.42465,126.66418 C 406.49107,126.66158 406.55753,126.66012 406.624,126.65974 z M 406.65525,125.59724 C 404.79677,125.5659 402.96344,126.46712 401.78608,127.89152 C 400.49592,129.45674 400.01731,131.64057 400.55953,133.59716 C 401.12596,135.75186 402.9133,137.51703 405.07479,138.05675 C 407.33649,138.64681 409.91104,137.90817 411.43511,136.1134 C 412.42682,135.01714 412.99503,133.54684 412.96775,132.06599 C 412.99313,131.51621 412.93168,130.90548 412.80555,130.34718 C 412.1779,127.58852 409.46307,125.55052 406.65525,125.59724 z" id="text4064" style="font-size:18.31413078px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:center;text-decoration:none;line-height:125%;letter-spacing:0px;word-spacing:0px;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;baseline-shift:baseline;color:#000000;fill:#7d4698;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Liberation Serif;-inkscape-font-specification:Sans" /></g></g></svg> |
5
transfersh-web/includes/download-bottom.html
@@ -0,0 +1,5 @@ | ||
+ </div> | ||
+ </div> | ||
+ </div> | ||
+ <br/> | ||
+</section> |
10
transfersh-web/includes/download-btn.html
@@ -0,0 +1,10 @@ | ||
+<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> |
6
transfersh-web/includes/download-top.html
@@ -0,0 +1,6 @@ | ||
+ <br/> | ||
+ <h2 class="page-title">{{.Filename}}</h2> | ||
+ <h4>type: <b>{{.ContentType}}</b></h4> | ||
+ <h4>size: <b>{{.ContentLength | format "#,###."}}</b> bytes</h4> | ||
+ | ||
+ <a href="{{.Url}}" class="btn-cta btn"> download</i> </a> <br/><br/> |
36
transfersh-web/includes/footer.html
@@ -0,0 +1,36 @@ | ||
+<footer> | ||
+ <div class="wrapper"> | ||
+ <div style=""> | ||
+ <a href="bitcoin:164ybRMLbg1dhhWWiUkXtiNr7jUhMKdJqH" label="Bitcoin+Donation" style="word-wrap: break-word;"> | ||
+ <img border="0" src=" /images/bitcoin.png" style="margin: 0 auto;;"> | ||
+ </a> | ||
+ </div> | ||
+ <br/> | ||
+ <br/> | ||
+ <img src="/images/Logo-orange.png" alt="Founded in Holland"> | ||
+ <p>Made with <i class="icon-heart"></i> by <a href="http://blog.dutchcoders.io/" title="Dutch Coders">Dutch Coders</a> | ||
+ </p> | ||
+ </div> | ||
+ | ||
+</footer> | ||
+ | ||
+ | ||
+<a href="https://github.com/you"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> | ||
+ | ||
+ <script> | ||
+ (function() { | ||
+ var uv = document.createElement('script'); | ||
+ uv.type = 'text/javascript'; | ||
+ uv.async = true; | ||
+ uv.src = '//widget.uservoice.com/5rkATbLIm8ClJQeOirOhFg.js'; | ||
+ var s = document.getElementsByTagName('script')[0]; | ||
+ s.parentNode.insertBefore(uv, s) | ||
+ })() | ||
+ </script> | ||
+ | ||
+ <!--[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> | ||
+ <![endif]--> | ||
+ | ||
+ | ||
+ |
15
transfersh-web/includes/ga.html
@@ -0,0 +1,15 @@ | ||
+ <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), | ||
+ 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'); | ||
+ </script> |
14
transfersh-web/includes/head.html
@@ -0,0 +1,14 @@ | ||
+<head> | ||
+ <meta charset="utf-8"> | ||
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
+ <title>transfer.sh - Easy and fast file sharing from the command-line.</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='//fonts.googleapis.com/css?family=Source+Sans+Pro:100,200,300' rel='stylesheet' type='text/css'> | ||
+ <link href='//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> |
9
transfersh-web/includes/js.html
@@ -0,0 +1,9 @@ | ||
+ <!-- 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 --> | ||
+ |
15
transfersh-web/includes/navigation.html
@@ -0,0 +1,15 @@ | ||
+ <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> |
146
transfersh-web/index.html
61
transfersh-web/scripts/clipboard.js
@@ -0,0 +1,61 @@ | ||
+(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(e) { | ||
+ e.preventDefault(); | ||
+ | ||
+ 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(); | ||
+ return (false); | ||
+ }, false); | ||
+ | ||
+ overlay.addEventListener("click", function(e) { | ||
+ e.preventDefault(); | ||
+ document.body.className = ''; | ||
+ return (false); | ||
+ }, false); | ||
+ | ||
+ copylink.children[2].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); | ||
+})(); |
94
transfersh-web/scripts/main.js
1,296
transfersh-web/scripts/showdown.js
@@ -0,0 +1,1296 @@ | ||
+// | ||
+// showdown.js -- A javascript port of Markdown. | ||
+// | ||
+// Copyright (c) 2007 John Fraser. | ||
+// | ||
+// Original Markdown Copyright (c) 2004-2005 John Gruber | ||
+// <http://daringfireball.net/projects/markdown/> | ||
+// | ||
+// Redistributable under a BSD-style open source license. | ||
+// See license.txt for more information. | ||
+// | ||
+// The full source distribution is at: | ||
+// | ||
+// A A L | ||
+// T C A | ||
+// T K B | ||
+// | ||
+// <http://www.attacklab.net/> | ||
+// | ||
+ | ||
+// | ||
+// Wherever possible, Showdown is a straight, line-by-line port | ||
+// of the Perl version of Markdown. | ||
+// | ||
+// This is not a normal parser design; it's basically just a | ||
+// series of string substitutions. It's hard to read and | ||
+// maintain this way, but keeping Showdown close to the original | ||
+// design makes it easier to port new features. | ||
+// | ||
+// More importantly, Showdown behaves like markdown.pl in most | ||
+// edge cases. So web applications can do client-side preview | ||
+// in Javascript, and then build identical HTML on the server. | ||
+// | ||
+// This port needs the new RegExp functionality of ECMA 262, | ||
+// 3rd Edition (i.e. Javascript 1.5). Most modern web browsers | ||
+// should do fine. Even with the new regular expression features, | ||
+// We do a lot of work to emulate Perl's regex functionality. | ||
+// The tricky changes in this file mostly have the "attacklab:" | ||
+// label. Major or self-explanatory changes don't. | ||
+// | ||
+// Smart diff tools like Araxis Merge will be able to match up | ||
+// this file with markdown.pl in a useful way. A little tweaking | ||
+// helps: in a copy of markdown.pl, replace "#" with "//" and | ||
+// replace "$text" with "text". Be sure to ignore whitespace | ||
+// and line endings. | ||
+// | ||
+ | ||
+ | ||
+// | ||
+// Showdown usage: | ||
+// | ||
+// var text = "Markdown *rocks*."; | ||
+// | ||
+// var converter = new Showdown.converter(); | ||
+// var html = converter.makeHtml(text); | ||
+// | ||
+// alert(html); | ||
+// | ||
+// Note: move the sample code to the bottom of this | ||
+// file before uncommenting it. | ||
+// | ||
+ | ||
+ | ||
+// | ||
+// Showdown namespace | ||
+// | ||
+var Showdown = {}; | ||
+ | ||
+// | ||
+// converter | ||
+// | ||
+// Wraps all "globals" so that the only thing | ||
+// exposed is makeHtml(). | ||
+// | ||
+Showdown.converter = function() { | ||
+ | ||
+// | ||
+// Globals: | ||
+// | ||
+ | ||
+// Global hashes, used by various utility routines | ||
+var g_urls; | ||
+var g_titles; | ||
+var g_html_blocks; | ||
+ | ||
+// Used to track when we're inside an ordered or unordered list | ||
+// (see _ProcessListItems() for details): | ||
+var g_list_level = 0; | ||
+ | ||
+ | ||
+this.makeHtml = function(text) { | ||
+// | ||
+// Main function. The order in which other subs are called here is | ||
+// essential. Link and image substitutions need to happen before | ||
+// _EscapeSpecialCharsWithinTagAttributes(), so that any *'s or _'s in the <a> | ||
+// and <img> tags get encoded. | ||
+// | ||
+ | ||
+ // Clear the global hashes. If we don't clear these, you get conflicts | ||
+ // from other articles when generating a page which contains more than | ||
+ // one article (e.g. an index page that shows the N most recent | ||
+ // articles): | ||
+ g_urls = new Array(); | ||
+ g_titles = new Array(); | ||
+ g_html_blocks = new Array(); | ||
+ | ||
+ // attacklab: Replace ~ with ~T | ||
+ // This lets us use tilde as an escape char to avoid md5 hashes | ||
+ // The choice of character is arbitray; anything that isn't | ||
+ // magic in Markdown will work. | ||
+ text = text.replace(/~/g,"~T"); | ||
+ | ||
+ // attacklab: Replace $ with ~D | ||
+ // RegExp interprets $ as a special character | ||
+ // when it's in a replacement string | ||
+ text = text.replace(/\$/g,"~D"); | ||
+ | ||
+ // Standardize line endings | ||
+ text = text.replace(/\r\n/g,"\n"); // DOS to Unix | ||
+ text = text.replace(/\r/g,"\n"); // Mac to Unix | ||
+ | ||
+ // Make sure text begins and ends with a couple of newlines: | ||
+ text = "\n\n" + text + "\n\n"; | ||
+ | ||
+ // Convert all tabs to spaces. | ||
+ text = _Detab(text); | ||
+ | ||
+ // Strip any lines consisting only of spaces and tabs. | ||
+ // This makes subsequent regexen easier to write, because we can | ||
+ // match consecutive blank lines with /\n+/ instead of something | ||
+ // contorted like /[ \t]*\n+/ . | ||
+ text = text.replace(/^[ \t]+$/mg,""); | ||
+ | ||
+ // Turn block-level HTML blocks into hash entries | ||
+ text = _HashHTMLBlocks(text); | ||
+ | ||
+ // Strip link definitions, store in hashes. | ||
+ text = _StripLinkDefinitions(text); | ||
+ | ||
+ text = _RunBlockGamut(text); | ||
+ | ||
+ text = _UnescapeSpecialChars(text); | ||
+ | ||
+ // attacklab: Restore dollar signs | ||
+ text = text.replace(/~D/g,"$$"); | ||
+ | ||
+ // attacklab: Restore tildes | ||
+ text = text.replace(/~T/g,"~"); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+var _StripLinkDefinitions = function(text) { | ||
+// | ||
+// Strips link definitions from text, stores the URLs and titles in | ||
+// hash references. | ||
+// | ||
+ | ||
+ // Link defs are in the form: ^[id]: url "optional title" | ||
+ | ||
+ /* | ||
+ var text = text.replace(/ | ||
+ ^[ ]{0,3}\[(.+)\]: // id = $1 attacklab: g_tab_width - 1 | ||
+ [ \t]* | ||
+ \n? // maybe *one* newline | ||
+ [ \t]* | ||
+ <?(\S+?)>? // url = $2 | ||
+ [ \t]* | ||
+ \n? // maybe one newline | ||
+ [ \t]* | ||
+ (?: | ||
+ (\n*) // any lines skipped = $3 attacklab: lookbehind removed | ||
+ ["(] | ||
+ (.+?) // title = $4 | ||
+ [")] | ||
+ [ \t]* | ||
+ )? // title is optional | ||
+ (?:\n+|$) | ||
+ /gm, | ||
+ function(){...}); | ||
+ */ | ||
+ var text = text.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|\Z)/gm, | ||
+ function (wholeMatch,m1,m2,m3,m4) { | ||
+ m1 = m1.toLowerCase(); | ||
+ g_urls[m1] = _EncodeAmpsAndAngles(m2); // Link IDs are case-insensitive | ||
+ if (m3) { | ||
+ // Oops, found blank lines, so it's not a title. | ||
+ // Put back the parenthetical statement we stole. | ||
+ return m3+m4; | ||
+ } else if (m4) { | ||
+ g_titles[m1] = m4.replace(/"/g,"""); | ||
+ } | ||
+ | ||
+ // Completely remove the definition from the text | ||
+ return ""; | ||
+ } | ||
+ ); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+var _HashHTMLBlocks = function(text) { | ||
+ // attacklab: Double up blank lines to reduce lookaround | ||
+ text = text.replace(/\n/g,"\n\n"); | ||
+ | ||
+ // Hashify HTML blocks: | ||
+ // We only want to do this for block-level HTML tags, such as headers, | ||
+ // lists, and tables. That's because we still want to wrap <p>s around | ||
+ // "paragraphs" that are wrapped in non-block-level tags, such as anchors, | ||
+ // phrase emphasis, and spans. The list of tags we're looking for is | ||
+ // hard-coded: | ||
+ var block_tags_a = "p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del" | ||
+ var block_tags_b = "p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math" | ||
+ | ||
+ // First, look for nested blocks, e.g.: | ||
+ // <div> | ||
+ // <div> | ||
+ // tags for inner block must be indented. | ||
+ // </div> | ||
+ // </div> | ||
+ // | ||
+ // The outermost tags must start at the left margin for this to match, and | ||
+ // the inner nested divs must be indented. | ||
+ // We need to do this before the next, more liberal match, because the next | ||
+ // match will start at the first `<div>` and stop at the first `</div>`. | ||
+ | ||
+ // attacklab: This regex can be expensive when it fails. | ||
+ /* | ||
+ var text = text.replace(/ | ||
+ ( // save in $1 | ||
+ ^ // start of line (with /m) | ||
+ <($block_tags_a) // start tag = $2 | ||
+ \b // word break | ||
+ // attacklab: hack around khtml/pcre bug... | ||
+ [^\r]*?\n // any number of lines, minimally matching | ||
+ </\2> // the matching end tag | ||
+ [ \t]* // trailing spaces/tabs | ||
+ (?=\n+) // followed by a newline | ||
+ ) // attacklab: there are sentinel newlines at end of document | ||
+ /gm,function(){...}}; | ||
+ */ | ||
+ text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,hashElement); | ||
+ | ||
+ // | ||
+ // Now match more liberally, simply from `\n<tag>` to `</tag>\n` | ||
+ // | ||
+ | ||
+ /* | ||
+ var text = text.replace(/ | ||
+ ( // save in $1 | ||
+ ^ // start of line (with /m) | ||
+ <($block_tags_b) // start tag = $2 | ||
+ \b // word break | ||
+ // attacklab: hack around khtml/pcre bug... | ||
+ [^\r]*? // any number of lines, minimally matching | ||
+ .*</\2> // the matching end tag | ||
+ [ \t]* // trailing spaces/tabs | ||
+ (?=\n+) // followed by a newline | ||
+ ) // attacklab: there are sentinel newlines at end of document | ||
+ /gm,function(){...}}; | ||
+ */ | ||
+ text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm,hashElement); | ||
+ | ||
+ // Special case just for <hr />. It was easier to make a special case than | ||
+ // to make the other regex more complicated. | ||
+ | ||
+ /* | ||
+ text = text.replace(/ | ||
+ ( // save in $1 | ||
+ \n\n // Starting after a blank line | ||
+ [ ]{0,3} | ||
+ (<(hr) // start tag = $2 | ||
+ \b // word break | ||
+ ([^<>])*? // | ||
+ \/?>) // the matching end tag | ||
+ [ \t]* | ||
+ (?=\n{2,}) // followed by a blank line | ||
+ ) | ||
+ /g,hashElement); | ||
+ */ | ||
+ text = text.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,hashElement); | ||
+ | ||
+ // Special case for standalone HTML comments: | ||
+ | ||
+ /* | ||
+ text = text.replace(/ | ||
+ ( // save in $1 | ||
+ \n\n // Starting after a blank line | ||
+ [ ]{0,3} // attacklab: g_tab_width - 1 | ||
+ <! | ||
+ (--[^\r]*?--\s*)+ | ||
+ > | ||
+ [ \t]* | ||
+ (?=\n{2,}) // followed by a blank line | ||
+ ) | ||
+ /g,hashElement); | ||
+ */ | ||
+ text = text.replace(/(\n\n[ ]{0,3}<!(--[^\r]*?--\s*)+>[ \t]*(?=\n{2,}))/g,hashElement); | ||
+ | ||
+ // PHP and ASP-style processor instructions (<?...?> and <%...%>) | ||
+ | ||
+ /* | ||
+ text = text.replace(/ | ||
+ (?: | ||
+ \n\n // Starting after a blank line | ||
+ ) | ||
+ ( // save in $1 | ||
+ [ ]{0,3} // attacklab: g_tab_width - 1 | ||
+ (?: | ||
+ <([?%]) // $2 | ||
+ [^\r]*? | ||
+ \2> | ||
+ ) | ||
+ [ \t]* | ||
+ (?=\n{2,}) // followed by a blank line | ||
+ ) | ||
+ /g,hashElement); | ||
+ */ | ||
+ text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,hashElement); | ||
+ | ||
+ // attacklab: Undo double lines (see comment at top of this function) | ||
+ text = text.replace(/\n\n/g,"\n"); | ||
+ return text; | ||
+} | ||
+ | ||
+var hashElement = function(wholeMatch,m1) { | ||
+ var blockText = m1; | ||
+ | ||
+ // Undo double lines | ||
+ blockText = blockText.replace(/\n\n/g,"\n"); | ||
+ blockText = blockText.replace(/^\n/,""); | ||
+ | ||
+ // strip trailing blank lines | ||
+ blockText = blockText.replace(/\n+$/g,""); | ||
+ | ||
+ // Replace the element text with a marker ("~KxK" where x is its key) | ||
+ blockText = "\n\n~K" + (g_html_blocks.push(blockText)-1) + "K\n\n"; | ||
+ | ||
+ return blockText; | ||
+}; | ||
+ | ||
+var _RunBlockGamut = function(text) { | ||
+// | ||
+// These are all the transformations that form block-level | ||
+// tags like paragraphs, headers, and list items. | ||
+// | ||
+ text = _DoHeaders(text); | ||
+ | ||
+ // Do Horizontal Rules: | ||
+ var key = hashBlock("<hr />"); | ||
+ text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,key); | ||
+ text = text.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,key); | ||
+ text = text.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,key); | ||
+ | ||
+ text = _DoLists(text); | ||
+ text = _DoCodeBlocks(text); | ||
+ text = _DoBlockQuotes(text); | ||
+ | ||
+ // We already ran _HashHTMLBlocks() before, in Markdown(), but that | ||
+ // was to escape raw HTML in the original Markdown source. This time, | ||
+ // we're escaping the markup we've just created, so that we don't wrap | ||
+ // <p> tags around block-level tags. | ||
+ text = _HashHTMLBlocks(text); | ||
+ text = _FormParagraphs(text); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+var _RunSpanGamut = function(text) { | ||
+// | ||
+// These are all the transformations that occur *within* block-level | ||
+// tags like paragraphs, headers, and list items. | ||
+// | ||
+ | ||
+ text = _DoCodeSpans(text); | ||
+ text = _EscapeSpecialCharsWithinTagAttributes(text); | ||
+ text = _EncodeBackslashEscapes(text); | ||
+ | ||
+ // Process anchor and image tags. Images must come first, | ||
+ // because ![foo][f] looks like an anchor. | ||
+ text = _DoImages(text); | ||
+ text = _DoAnchors(text); | ||
+ | ||
+ // Make links out of things like `<http://example.com/>` | ||
+ // Must come after _DoAnchors(), because you can use < and > | ||
+ // delimiters in inline links like [this](<url>). | ||
+ text = _DoAutoLinks(text); | ||
+ text = _EncodeAmpsAndAngles(text); | ||
+ text = _DoItalicsAndBold(text); | ||
+ | ||
+ // Do hard breaks: | ||
+ text = text.replace(/ +\n/g," <br />\n"); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+var _EscapeSpecialCharsWithinTagAttributes = function(text) { | ||
+// | ||
+// Within tags -- meaning between < and > -- encode [\ ` * _] so they | ||
+// don't conflict with their use in Markdown for code, italics and strong. | ||
+// | ||
+ | ||
+ // Build a regex to find HTML tags and comments. See Friedl's | ||
+ // "Mastering Regular Expressions", 2nd Ed., pp. 200-201. | ||
+ var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|<!(--.*?--\s*)+>)/gi; | ||
+ | ||
+ text = text.replace(regex, function(wholeMatch) { | ||
+ var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g,"$1`"); | ||
+ tag = escapeCharacters(tag,"\\`*_"); | ||
+ return tag; | ||
+ }); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+var _DoAnchors = function(text) { | ||
+// | ||
+// Turn Markdown link shortcuts into XHTML <a> tags. | ||
+// | ||
+ // | ||
+ // First, handle reference-style links: [link text] [id] | ||
+ // | ||
+ | ||
+ /* | ||
+ text = text.replace(/ | ||
+ ( // wrap whole match in $1 | ||
+ \[ | ||
+ ( | ||
+ (?: | ||
+ \[[^\]]*\] // allow brackets nested one level | ||
+ | | ||
+ [^\[] // or anything else | ||
+ )* | ||
+ ) | ||
+ \] | ||
+ | ||
+ [ ]? // one optional space | ||
+ (?:\n[ ]*)? // one optional newline followed by spaces | ||
+ | ||
+ \[ | ||
+ (.*?) // id = $3 | ||
+ \] | ||
+ )()()()() // pad remaining backreferences | ||
+ /g,_DoAnchors_callback); | ||
+ */ | ||
+ text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,writeAnchorTag); | ||
+ | ||
+ // | ||
+ // Next, inline-style links: [link text](url "optional title") | ||
+ // | ||
+ | ||
+ /* | ||
+ text = text.replace(/ | ||
+ ( // wrap whole match in $1 | ||
+ \[ | ||
+ ( | ||
+ (?: | ||
+ \[[^\]]*\] // allow brackets nested one level | ||
+ | | ||
+ [^\[\]] // or anything else | ||
+ ) | ||
+ ) | ||
+ \] | ||
+ \( // literal paren | ||
+ [ \t]* | ||
+ () // no id, so leave $3 empty | ||
+ <?(.*?)>? // href = $4 | ||
+ [ \t]* | ||
+ ( // $5 | ||
+ (['"]) // quote char = $6 | ||
+ (.*?) // Title = $7 | ||
+ \6 // matching quote | ||
+ [ \t]* // ignore any spaces/tabs between closing quote and ) | ||
+ )? // title is optional | ||
+ \) | ||
+ ) | ||
+ /g,writeAnchorTag); | ||
+ */ | ||
+ text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()<?(.*?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,writeAnchorTag); | ||
+ | ||
+ // | ||
+ // Last, handle reference-style shortcuts: [link text] | ||
+ // These must come last in case you've also got [link test][1] | ||
+ // or [link test](/foo) | ||
+ // | ||
+ | ||
+ /* | ||
+ text = text.replace(/ | ||
+ ( // wrap whole match in $1 | ||
+ \[ | ||
+ ([^\[\]]+) // link text = $2; can't contain '[' or ']' | ||
+ \] | ||
+ )()()()()() // pad rest of backreferences | ||
+ /g, writeAnchorTag); | ||
+ */ | ||
+ text = text.replace(/(\[([^\[\]]+)\])()()()()()/g, writeAnchorTag); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+var writeAnchorTag = function(wholeMatch,m1,m2,m3,m4,m5,m6,m7) { | ||
+ if (m7 == undefined) m7 = ""; | ||
+ var whole_match = m1; | ||
+ var link_text = m2; | ||
+ var link_id = m3.toLowerCase(); | ||
+ var url = m4; | ||
+ var title = m7; | ||
+ | ||
+ if (url == "") { | ||
+ if (link_id == "") { | ||
+ // lower-case and turn embedded newlines into spaces | ||
+ link_id = link_text.toLowerCase().replace(/ ?\n/g," "); | ||
+ } | ||
+ url = "#"+link_id; | ||
+ | ||
+ if (g_urls[link_id] != undefined) { | ||
+ url = g_urls[link_id]; | ||
+ if (g_titles[link_id] != undefined) { | ||
+ title = g_titles[link_id]; | ||
+ } | ||
+ } | ||
+ else { | ||
+ if (whole_match.search(/\(\s*\)$/m)>-1) { | ||
+ // Special case for explicit empty url | ||
+ url = ""; | ||
+ } else { | ||
+ return whole_match; | ||
+ } | ||
+ } | ||
+ } | ||
+ | ||
+ url = escapeCharacters(url,"*_"); | ||
+ var result = "<a href=\"" + url + "\""; | ||
+ | ||
+ if (title != "") { | ||
+ title = title.replace(/"/g,"""); | ||
+ title = escapeCharacters(title,"*_"); | ||
+ result += " title=\"" + title + "\""; | ||
+ } | ||
+ | ||
+ result += ">" + link_text + "</a>"; | ||
+ | ||
+ return result; | ||
+} | ||
+ | ||
+ | ||
+var _DoImages = function(text) { | ||
+// | ||
+// Turn Markdown image shortcuts into <img> tags. | ||
+// | ||
+ | ||
+ // | ||
+ // First, handle reference-style labeled images: ![alt text][id] | ||
+ // | ||
+ | ||
+ /* | ||
+ text = text.replace(/ | ||
+ ( // wrap whole match in $1 | ||
+ !\[ | ||
+ (.*?) // alt text = $2 | ||
+ \] | ||
+ | ||
+ [ ]? // one optional space | ||
+ (?:\n[ ]*)? // one optional newline followed by spaces | ||
+ | ||
+ \[ | ||
+ (.*?) // id = $3 | ||
+ \] | ||
+ )()()()() // pad rest of backreferences | ||
+ /g,writeImageTag); | ||
+ */ | ||
+ text = text.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,writeImageTag); | ||
+ | ||
+ // | ||
+ // Next, handle inline images: ![alt text](url "optional title") | ||
+ // Don't forget: encode * and _ | ||
+ | ||
+ /* | ||
+ text = text.replace(/ | ||
+ ( // wrap whole match in $1 | ||
+ !\[ | ||
+ (.*?) // alt text = $2 | ||
+ \] | ||
+ \s? // One optional whitespace character | ||
+ \( // literal paren | ||
+ [ \t]* | ||
+ () // no id, so leave $3 empty | ||
+ <?(\S+?)>? // src url = $4 | ||
+ [ \t]* | ||
+ ( // $5 | ||
+ (['"]) // quote char = $6 | ||
+ (.*?) // title = $7 | ||
+ \6 // matching quote | ||
+ [ \t]* | ||
+ )? // title is optional | ||
+ \) | ||
+ ) | ||
+ /g,writeImageTag); | ||
+ */ | ||
+ text = text.replace(/(!\[(.*?)\]\s?\([ \t]*()<?(\S+?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,writeImageTag); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+var writeImageTag = function(wholeMatch,m1,m2,m3,m4,m5,m6,m7) { | ||
+ var whole_match = m1; | ||
+ var alt_text = m2; | ||
+ var link_id = m3.toLowerCase(); | ||
+ var url = m4; | ||
+ var title = m7; | ||
+ | ||
+ if (!title) title = ""; | ||
+ | ||
+ if (url == "") { | ||
+ if (link_id == "") { | ||
+ // lower-case and turn embedded newlines into spaces | ||
+ link_id = alt_text.toLowerCase().replace(/ ?\n/g," "); | ||
+ } | ||
+ url = "#"+link_id; | ||
+ | ||
+ if (g_urls[link_id] != undefined) { | ||
+ url = g_urls[link_id]; | ||
+ if (g_titles[link_id] != undefined) { | ||
+ title = g_titles[link_id]; | ||
+ } | ||
+ } | ||
+ else { | ||
+ return whole_match; | ||
+ } | ||
+ } | ||
+ | ||
+ alt_text = alt_text.replace(/"/g,"""); | ||
+ url = escapeCharacters(url,"*_"); | ||
+ var result = "<img src=\"" + url + "\" alt=\"" + alt_text + "\""; | ||
+ | ||
+ // attacklab: Markdown.pl adds empty title attributes to images. | ||
+ // Replicate this bug. | ||
+ | ||
+ //if (title != "") { | ||
+ title = title.replace(/"/g,"""); | ||
+ title = escapeCharacters(title,"*_"); | ||
+ result += " title=\"" + title + "\""; | ||
+ //} | ||
+ | ||
+ result += " />"; | ||
+ | ||
+ return result; | ||
+} | ||
+ | ||
+ | ||
+var _DoHeaders = function(text) { | ||
+ | ||
+ // Setext-style headers: | ||
+ // Header 1 | ||
+ // ======== | ||
+ // | ||
+ // Header 2 | ||
+ // -------- | ||
+ // | ||
+ text = text.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm, | ||
+ function(wholeMatch,m1){return hashBlock("<h1>" + _RunSpanGamut(m1) + "</h1>");}); | ||
+ | ||
+ text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm, | ||
+ function(matchFound,m1){return hashBlock("<h2>" + _RunSpanGamut(m1) + "</h2>");}); | ||
+ | ||
+ // atx-style headers: | ||
+ // # Header 1 | ||
+ // ## Header 2 | ||
+ // ## Header 2 with closing hashes ## | ||
+ // ... | ||
+ // ###### Header 6 | ||
+ // | ||
+ | ||
+ /* | ||
+ text = text.replace(/ | ||
+ ^(\#{1,6}) // $1 = string of #'s | ||
+ [ \t]* | ||
+ (.+?) // $2 = Header text | ||
+ [ \t]* | ||
+ \#* // optional closing #'s (not counted) | ||
+ \n+ | ||
+ /gm, function() {...}); | ||
+ */ | ||
+ | ||
+ text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm, | ||
+ function(wholeMatch,m1,m2) { | ||
+ var h_level = m1.length; | ||
+ return hashBlock("<h" + h_level + ">" + _RunSpanGamut(m2) + "</h" + h_level + ">"); | ||
+ }); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+// This declaration keeps Dojo compressor from outputting garbage: | ||
+var _ProcessListItems; | ||
+ | ||
+var _DoLists = function(text) { | ||
+// | ||
+// Form HTML ordered (numbered) and unordered (bulleted) lists. | ||
+// | ||
+ | ||
+ // attacklab: add sentinel to hack around khtml/safari bug: | ||
+ // http://bugs.webkit.org/show_bug.cgi?id=11231 | ||
+ text += "~0"; | ||
+ | ||
+ // Re-usable pattern to match any entirel ul or ol list: | ||
+ | ||
+ /* | ||
+ var whole_list = / | ||
+ ( // $1 = whole list | ||
+ ( // $2 | ||
+ [ ]{0,3} // attacklab: g_tab_width - 1 | ||
+ ([*+-]|\d+[.]) // $3 = first list item marker | ||
+ [ \t]+ | ||
+ ) | ||
+ [^\r]+? | ||
+ ( // $4 | ||
+ ~0 // sentinel for workaround; should be $ | ||
+ | | ||
+ \n{2,} | ||
+ (?=\S) | ||
+ (?! // Negative lookahead for another list item marker | ||
+ [ \t]* | ||
+ (?:[*+-]|\d+[.])[ \t]+ | ||
+ ) | ||
+ ) | ||
+ )/g | ||
+ */ | ||
+ var whole_list = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; | ||
+ | ||
+ if (g_list_level) { | ||
+ text = text.replace(whole_list,function(wholeMatch,m1,m2) { | ||
+ var list = m1; | ||
+ var list_type = (m2.search(/[*+-]/g)>-1) ? "ul" : "ol"; | ||
+ | ||
+ // Turn double returns into triple returns, so that we can make a | ||
+ // paragraph for the last item in a list, if necessary: | ||
+ list = list.replace(/\n{2,}/g,"\n\n\n");; | ||
+ var result = _ProcessListItems(list); | ||
+ | ||
+ // Trim any trailing whitespace, to put the closing `</$list_type>` | ||
+ // up on the preceding line, to get it past the current stupid | ||
+ // HTML block parser. This is a hack to work around the terrible | ||
+ // hack that is the HTML block parser. | ||
+ result = result.replace(/\s+$/,""); | ||
+ result = "<"+list_type+">" + result + "</"+list_type+">\n"; | ||
+ return result; | ||
+ }); | ||
+ } else { | ||
+ whole_list = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g; | ||
+ text = text.replace(whole_list,function(wholeMatch,m1,m2,m3) { | ||
+ var runup = m1; | ||
+ var list = m2; | ||
+ | ||
+ var list_type = (m3.search(/[*+-]/g)>-1) ? "ul" : "ol"; | ||
+ // Turn double returns into triple returns, so that we can make a | ||
+ // paragraph for the last item in a list, if necessary: | ||
+ var list = list.replace(/\n{2,}/g,"\n\n\n");; | ||
+ var result = _ProcessListItems(list); | ||
+ result = runup + "<"+list_type+">\n" + result + "</"+list_type+">\n"; | ||
+ return result; | ||
+ }); | ||
+ } | ||
+ | ||
+ // attacklab: strip sentinel | ||
+ text = text.replace(/~0/,""); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+_ProcessListItems = function(list_str) { | ||
+// | ||
+// Process the contents of a single ordered or unordered list, splitting it | ||
+// into individual list items. | ||
+// | ||
+ // The $g_list_level global keeps track of when we're inside a list. | ||
+ // Each time we enter a list, we increment it; when we leave a list, | ||
+ // we decrement. If it's zero, we're not in a list anymore. | ||
+ // | ||
+ // We do this because when we're not inside a list, we want to treat | ||
+ // something like this: | ||
+ // | ||
+ // I recommend upgrading to version | ||
+ // 8. Oops, now this line is treated | ||
+ // as a sub-list. | ||
+ // | ||
+ // As a single paragraph, despite the fact that the second line starts | ||
+ // with a digit-period-space sequence. | ||
+ // | ||
+ // Whereas when we're inside a list (or sub-list), that line will be | ||
+ // treated as the start of a sub-list. What a kludge, huh? This is | ||
+ // an aspect of Markdown's syntax that's hard to parse perfectly | ||
+ // without resorting to mind-reading. Perhaps the solution is to | ||
+ // change the syntax rules such that sub-lists must start with a | ||
+ // starting cardinal number; e.g. "1." or "a.". | ||
+ | ||
+ g_list_level++; | ||
+ | ||
+ // trim trailing blank lines: | ||
+ list_str = list_str.replace(/\n{2,}$/,"\n"); | ||
+ | ||
+ // attacklab: add sentinel to emulate \z | ||
+ list_str += "~0"; | ||
+ | ||
+ /* | ||
+ list_str = list_str.replace(/ | ||
+ (\n)? // leading line = $1 | ||
+ (^[ \t]*) // leading whitespace = $2 | ||
+ ([*+-]|\d+[.]) [ \t]+ // list marker = $3 | ||
+ ([^\r]+? // list item text = $4 | ||
+ (\n{1,2})) | ||
+ (?= \n* (~0 | \2 ([*+-]|\d+[.]) [ \t]+)) | ||
+ /gm, function(){...}); | ||
+ */ | ||
+ list_str = list_str.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm, | ||
+ function(wholeMatch,m1,m2,m3,m4){ | ||
+ var item = m4; | ||
+ var leading_line = m1; | ||
+ var leading_space = m2; | ||
+ | ||
+ if (leading_line || (item.search(/\n{2,}/)>-1)) { | ||
+ item = _RunBlockGamut(_Outdent(item)); | ||
+ } | ||
+ else { | ||
+ // Recursion for sub-lists: | ||
+ item = _DoLists(_Outdent(item)); | ||
+ item = item.replace(/\n$/,""); // chomp(item) | ||
+ item = _RunSpanGamut(item); | ||
+ } | ||
+ | ||
+ return "<li>" + item + "</li>\n"; | ||
+ } | ||
+ ); | ||
+ | ||
+ // attacklab: strip sentinel | ||
+ list_str = list_str.replace(/~0/g,""); | ||
+ | ||
+ g_list_level--; | ||
+ return list_str; | ||
+} | ||
+ | ||
+ | ||
+var _DoCodeBlocks = function(text) { | ||
+// | ||
+// Process Markdown `<pre><code>` blocks. | ||
+// | ||
+ | ||
+ /* | ||
+ text = text.replace(text, | ||
+ /(?:\n\n|^) | ||
+ ( // $1 = the code block -- one or more lines, starting with a space/tab | ||
+ (?: | ||
+ (?:[ ]{4}|\t) // Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width | ||
+ .*\n+ | ||
+ )+ | ||
+ ) | ||
+ (\n*[ ]{0,3}[^ \t\n]|(?=~0)) // attacklab: g_tab_width | ||
+ /g,function(){...}); | ||
+ */ | ||
+ | ||
+ // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug | ||
+ text += "~0"; | ||
+ | ||
+ text = text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g, | ||
+ function(wholeMatch,m1,m2) { | ||
+ var codeblock = m1; | ||
+ var nextChar = m2; | ||
+ | ||
+ codeblock = _EncodeCode( _Outdent(codeblock)); | ||
+ codeblock = _Detab(codeblock); | ||
+ codeblock = codeblock.replace(/^\n+/g,""); // trim leading newlines | ||
+ codeblock = codeblock.replace(/\n+$/g,""); // trim trailing whitespace | ||
+ | ||
+ codeblock = "<pre><code>" + codeblock + "\n</code></pre>"; | ||
+ | ||
+ return hashBlock(codeblock) + nextChar; | ||
+ } | ||
+ ); | ||
+ | ||
+ // attacklab: strip sentinel | ||
+ text = text.replace(/~0/,""); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+var hashBlock = function(text) { | ||
+ text = text.replace(/(^\n+|\n+$)/g,""); | ||
+ return "\n\n~K" + (g_html_blocks.push(text)-1) + "K\n\n"; | ||
+} | ||
+ | ||
+ | ||
+var _DoCodeSpans = function(text) { | ||
+// | ||
+// * Backtick quotes are used for <code></code> spans. | ||
+// | ||
+// * You can use multiple backticks as the delimiters if you want to | ||
+// include literal backticks in the code span. So, this input: | ||
+// | ||
+// Just type ``foo `bar` baz`` at the prompt. | ||
+// | ||
+// Will translate to: | ||
+// | ||
+// <p>Just type <code>foo `bar` baz</code> at the prompt.</p> | ||
+// | ||
+// There's no arbitrary limit to the number of backticks you | ||
+// can use as delimters. If you need three consecutive backticks | ||
+// in your code, use four for delimiters, etc. | ||
+// | ||
+// * You can use spaces to get literal backticks at the edges: | ||
+// | ||
+// ... type `` `bar` `` ... | ||
+// | ||
+// Turns to: | ||
+// | ||
+// ... type <code>`bar`</code> ... | ||
+// | ||
+ | ||
+ /* | ||
+ text = text.replace(/ | ||
+ (^|[^\\]) // Character before opening ` can't be a backslash | ||
+ (`+) // $2 = Opening run of ` | ||
+ ( // $3 = The code block | ||
+ [^\r]*? | ||
+ [^`] // attacklab: work around lack of lookbehind | ||
+ ) | ||
+ \2 // Matching closer | ||
+ (?!`) | ||
+ /gm, function(){...}); | ||
+ */ | ||
+ | ||
+ text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, | ||
+ function(wholeMatch,m1,m2,m3,m4) { | ||
+ var c = m3; | ||
+ c = c.replace(/^([ \t]*)/g,""); // leading whitespace | ||
+ c = c.replace(/[ \t]*$/g,""); // trailing whitespace | ||
+ c = _EncodeCode(c); | ||
+ return m1+"<code>"+c+"</code>"; | ||
+ }); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+var _EncodeCode = function(text) { | ||
+// | ||
+// Encode/escape certain characters inside Markdown code runs. | ||
+// The point is that in code, these characters are literals, | ||
+// and lose their special Markdown meanings. | ||
+// | ||
+ // Encode all ampersands; HTML entities are not | ||
+ // entities within a Markdown code span. | ||
+ text = text.replace(/&/g,"&"); | ||
+ | ||
+ // Do the angle bracket song and dance: | ||
+ text = text.replace(/</g,"<"); | ||
+ text = text.replace(/>/g,">"); | ||
+ | ||
+ // Now, escape characters that are magic in Markdown: | ||
+ text = escapeCharacters(text,"\*_{}[]\\",false); | ||
+ | ||
+// jj the line above breaks this: | ||
+//--- | ||
+ | ||
+//* Item | ||
+ | ||
+// 1. Subitem | ||
+ | ||
+// special char: * | ||
+//--- | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+var _DoItalicsAndBold = function(text) { | ||
+ | ||
+ // <strong> must go first: | ||
+ text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g, | ||
+ "<strong>$2</strong>"); | ||
+ | ||
+ text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g, | ||
+ "<em>$2</em>"); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+var _DoBlockQuotes = function(text) { | ||
+ | ||
+ /* | ||
+ text = text.replace(/ | ||
+ ( // Wrap whole match in $1 | ||
+ ( | ||
+ ^[ \t]*>[ \t]? // '>' at the start of a line | ||
+ .+\n // rest of the first line | ||
+ (.+\n)* // subsequent consecutive lines | ||
+ \n* // blanks | ||
+ )+ | ||
+ ) | ||
+ /gm, function(){...}); | ||
+ */ | ||
+ | ||
+ text = text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm, | ||
+ function(wholeMatch,m1) { | ||
+ var bq = m1; | ||
+ | ||
+ // attacklab: hack around Konqueror 3.5.4 bug: | ||
+ // "----------bug".replace(/^-/g,"") == "bug" | ||
+ | ||
+ bq = bq.replace(/^[ \t]*>[ \t]?/gm,"~0"); // trim one level of quoting | ||
+ | ||
+ // attacklab: clean up hack | ||
+ bq = bq.replace(/~0/g,""); | ||
+ | ||
+ bq = bq.replace(/^[ \t]+$/gm,""); // trim whitespace-only lines | ||
+ bq = _RunBlockGamut(bq); // recurse | ||
+ | ||
+ bq = bq.replace(/(^|\n)/g,"$1 "); | ||
+ // These leading spaces screw with <pre> content, so we need to fix that: | ||
+ bq = bq.replace( | ||
+ /(\s*<pre>[^\r]+?<\/pre>)/gm, | ||
+ function(wholeMatch,m1) { | ||
+ var pre = m1; | ||
+ // attacklab: hack around Konqueror 3.5.4 bug: | ||
+ pre = pre.replace(/^ /mg,"~0"); | ||
+ pre = pre.replace(/~0/g,""); | ||
+ return pre; | ||
+ }); | ||
+ | ||
+ return hashBlock("<blockquote>\n" + bq + "\n</blockquote>"); | ||
+ }); | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+var _FormParagraphs = function(text) { | ||
+// | ||
+// Params: | ||
+// $text - string to process with html <p> tags | ||
+// | ||
+ | ||
+ // Strip leading and trailing lines: | ||
+ text = text.replace(/^\n+/g,""); | ||
+ text = text.replace(/\n+$/g,""); | ||
+ | ||
+ var grafs = text.split(/\n{2,}/g); | ||
+ var grafsOut = new Array(); | ||
+ | ||
+ // | ||
+ // Wrap <p> tags. | ||
+ // | ||
+ var end = grafs.length; | ||
+ for (var i=0; i<end; i++) { | ||
+ var str = grafs[i]; | ||
+ | ||
+ // if this is an HTML marker, copy it | ||
+ if (str.search(/~K(\d+)K/g) >= 0) { | ||
+ grafsOut.push(str); | ||
+ } | ||
+ else if (str.search(/\S/) >= 0) { | ||
+ str = _RunSpanGamut(str); | ||
+ str = str.replace(/^([ \t]*)/g,"<p>"); | ||
+ str += "</p>" | ||
+ grafsOut.push(str); | ||
+ } | ||
+ | ||
+ } | ||
+ | ||
+ // | ||
+ // Unhashify HTML blocks | ||
+ // | ||
+ end = grafsOut.length; | ||
+ for (var i=0; i<end; i++) { | ||
+ // if this is a marker for an html block... | ||
+ while (grafsOut[i].search(/~K(\d+)K/) >= 0) { | ||
+ var blockText = g_html_blocks[RegExp.$1]; | ||
+ blockText = blockText.replace(/\$/g,"$$$$"); // Escape any dollar signs | ||
+ grafsOut[i] = grafsOut[i].replace(/~K\d+K/,blockText); | ||
+ } | ||
+ } | ||
+ | ||
+ return grafsOut.join("\n\n"); | ||
+} | ||
+ | ||
+ | ||
+var _EncodeAmpsAndAngles = function(text) { | ||
+// Smart processing for ampersands and angle brackets that need to be encoded. | ||
+ | ||
+ // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: | ||
+ // http://bumppo.net/projects/amputator/ | ||
+ text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"); | ||
+ | ||
+ // Encode naked <'s | ||
+ text = text.replace(/<(?![a-z\/?\$!])/gi,"<"); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+var _EncodeBackslashEscapes = function(text) { | ||
+// | ||
+// Parameter: String. | ||
+// Returns: The string, with after processing the following backslash | ||
+// escape sequences. | ||
+// | ||
+ | ||
+ // attacklab: The polite way to do this is with the new | ||
+ // escapeCharacters() function: | ||
+ // | ||
+ // text = escapeCharacters(text,"\\",true); | ||
+ // text = escapeCharacters(text,"`*_{}[]()>#+-.!",true); | ||
+ // | ||
+ // ...but we're sidestepping its use of the (slow) RegExp constructor | ||
+ // as an optimization for Firefox. This function gets called a LOT. | ||
+ | ||
+ text = text.replace(/\\(\\)/g,escapeCharacters_callback); | ||
+ text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g,escapeCharacters_callback); | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+var _DoAutoLinks = function(text) { | ||
+ | ||
+ text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,"<a href=\"$1\">$1</a>"); | ||
+ | ||
+ // Email addresses: <address@domain.foo> | ||
+ | ||
+ /* | ||
+ text = text.replace(/ | ||
+ < | ||
+ (?:mailto:)? | ||
+ ( | ||
+ [-.\w]+ | ||
+ \@ | ||
+ [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ | ||
+ ) | ||
+ > | ||
+ /gi, _DoAutoLinks_callback()); | ||
+ */ | ||
+ text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi, | ||
+ function(wholeMatch,m1) { | ||
+ return _EncodeEmailAddress( _UnescapeSpecialChars(m1) ); | ||
+ } | ||
+ ); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+var _EncodeEmailAddress = function(addr) { | ||
+// | ||
+// Input: an email address, e.g. "foo@example.com" | ||
+// | ||
+// Output: the email address as a mailto link, with each character | ||
+// of the address encoded as either a decimal or hex entity, in | ||
+// the hopes of foiling most address harvesting spam bots. E.g.: | ||
+// | ||
+// <a href="mailto:foo@e | ||
+// xample.com">foo | ||
+// @example.com</a> | ||
+// | ||
+// Based on a filter by Matthew Wickline, posted to the BBEdit-Talk | ||
+// mailing list: <http://tinyurl.com/yu7ue> | ||
+// | ||
+ | ||
+ // attacklab: why can't javascript speak hex? | ||
+ function char2hex(ch) { | ||
+ var hexDigits = '0123456789ABCDEF'; | ||
+ var dec = ch.charCodeAt(0); | ||
+ return(hexDigits.charAt(dec>>4) + hexDigits.charAt(dec&15)); | ||
+ } | ||
+ | ||
+ var encode = [ | ||
+ function(ch){return "&#"+ch.charCodeAt(0)+";";}, | ||
+ function(ch){return "&#x"+char2hex(ch)+";";}, | ||
+ function(ch){return ch;} | ||
+ ]; | ||
+ | ||
+ addr = "mailto:" + addr; | ||
+ | ||
+ addr = addr.replace(/./g, function(ch) { | ||
+ if (ch == "@") { | ||
+ // this *must* be encoded. I insist. | ||
+ ch = encode[Math.floor(Math.random()*2)](ch); | ||
+ } else if (ch !=":") { | ||
+ // leave ':' alone (to spot mailto: later) | ||
+ var r = Math.random(); | ||
+ // roughly 10% raw, 45% hex, 45% dec | ||
+ ch = ( | ||
+ r > .9 ? encode[2](ch) : | ||
+ r > .45 ? encode[1](ch) : | ||
+ encode[0](ch) | ||
+ ); | ||
+ } | ||
+ return ch; | ||
+ }); | ||
+ | ||
+ addr = "<a href=\"" + addr + "\">" + addr + "</a>"; | ||
+ addr = addr.replace(/">.+:/g,"\">"); // strip the mailto: from the visible part | ||
+ | ||
+ return addr; | ||
+} | ||
+ | ||
+ | ||
+var _UnescapeSpecialChars = function(text) { | ||
+// | ||
+// Swap back in all the special characters we've hidden. | ||
+// | ||
+ text = text.replace(/~E(\d+)E/g, | ||
+ function(wholeMatch,m1) { | ||
+ var charCodeToReplace = parseInt(m1); | ||
+ return String.fromCharCode(charCodeToReplace); | ||
+ } | ||
+ ); | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+var _Outdent = function(text) { | ||
+// | ||
+// Remove one level of line-leading tabs or spaces | ||
+// | ||
+ | ||
+ // attacklab: hack around Konqueror 3.5.4 bug: | ||
+ // "----------bug".replace(/^-/g,"") == "bug" | ||
+ | ||
+ text = text.replace(/^(\t|[ ]{1,4})/gm,"~0"); // attacklab: g_tab_width | ||
+ | ||
+ // attacklab: clean up hack | ||
+ text = text.replace(/~0/g,"") | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+var _Detab = function(text) { | ||
+// attacklab: Detab's completely rewritten for speed. | ||
+// In perl we could fix it by anchoring the regexp with \G. | ||
+// In javascript we're less fortunate. | ||
+ | ||
+ // expand first n-1 tabs | ||
+ text = text.replace(/\t(?=\t)/g," "); // attacklab: g_tab_width | ||
+ | ||
+ // replace the nth with two sentinels | ||
+ text = text.replace(/\t/g,"~A~B"); | ||
+ | ||
+ // use the sentinel to anchor our regex so it doesn't explode | ||
+ text = text.replace(/~B(.+?)~A/g, | ||
+ function(wholeMatch,m1,m2) { | ||
+ var leadingText = m1; | ||
+ var numSpaces = 4 - leadingText.length % 4; // attacklab: g_tab_width | ||
+ | ||
+ // there *must* be a better way to do this: | ||
+ for (var i=0; i<numSpaces; i++) leadingText+=" "; | ||
+ | ||
+ return leadingText; | ||
+ } | ||
+ ); | ||
+ | ||
+ // clean up sentinels | ||
+ text = text.replace(/~A/g," "); // attacklab: g_tab_width | ||
+ text = text.replace(/~B/g,""); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+// | ||
+// attacklab: Utility functions | ||
+// | ||
+ | ||
+ | ||
+var escapeCharacters = function(text, charsToEscape, afterBackslash) { | ||
+ // First we have to escape the escape characters so that | ||
+ // we can build a character class out of them | ||
+ var regexString = "([" + charsToEscape.replace(/([\[\]\\])/g,"\\$1") + "])"; | ||
+ | ||
+ if (afterBackslash) { | ||
+ regexString = "\\\\" + regexString; | ||
+ } | ||
+ | ||
+ var regex = new RegExp(regexString,"g"); | ||
+ text = text.replace(regex,escapeCharacters_callback); | ||
+ | ||
+ return text; | ||
+} | ||
+ | ||
+ | ||
+var escapeCharacters_callback = function(wholeMatch,m1) { | ||
+ var charCodeToEscape = m1.charCodeAt(0); | ||
+ return "~E"+charCodeToEscape+"E"; | ||
+} | ||
+ | ||
+} // end of Showdown.converter |
1
transfersh-web/scripts/typewriter-bundle.min.js
@@ -1 +0,0 @@ | ||
-require=function t(e,n,r){function i(u,s){if(!n[u]){if(!e[u]){var a="function"==typeof require&&require;if(!s&&a)return a(u,!0);if(o)return o(u,!0);throw new Error("Cannot find module '"+u+"'")}var c=n[u]={exports:{}};e[u][0].call(c.exports,function(t){var n=e[u][1][t];return i(n?n:t)},c,c.exports,t,e,n,r)}return n[u].exports}for(var o="function"==typeof require&&require,u=0;u<r.length;u++)i(r[u]);return i}({1:[function(t,e){(function(){var n,r;r=t("./random"),n=function(t,e,n,i){var o,u,s;return o=-1,s=-1,u=!1,{next:function(){var a;if(o>=i.length-1){if(-1===s)return null;u=!0}return u?o>=s?(o--,"\b"):(u=!1,s=-1,i.charAt(++o)):(o++,u=-1!==s&&o%n===0,r.integerInRange(0,100)>e?(a=t.getAdjacentCharacter(i.charAt(o)),null==a?i.charAt(o):(-1===s&&(s=o,u=1===r.integerInRange(0,1)),a)):i.charAt(o))}}},e.exports=n}).call(this)},{"./random":4}],2:[function(t,e){(function(){var n,r,i,o;o=t("./random"),i=[["`","1","2","3","4","5","6","7","8","9","0","-","="],["","Q","W","E","R","T","Y","U","I","O","P","[","]","\\"],["","A","S","D","F","G","H","J","K","L",";","'"],["","Z","X","C","V","B","N","M",",",".","/"]],r=function(t){return t===t.toLowerCase()},n=function(t){var e,u,s,a,c,l,f,p,m,h;for(l=f=0,m=i.length;m>f;l=f+=1)for(a=p=0,h=i[l].length;h>p;a=p+=1)if(i[l][a].toLowerCase()===t.toLowerCase())return c=o.integerInRange(-1,1),s=l+c,(s>=i.length||0>s)&&(s+=-2*c),a>=i[s].length&&(a=i[s].length-1),c=0===c?[-1,1][o.integerInRange(0,1)]:o.integerInRange(-1,1),u=a+c,(u>=i[s].length||0>u)&&(u+=-2*c),e=i[s][u],""===e?n(t):r(t)?e.toLowerCase():e;return null},e.exports.getAdjacentCharacter=n}).call(this)},{"./random":4}],3:[function(t,e){(function(){var n,r,i;i=t("assert"),r=t("./sequence"),n=function(){function t(t){this.onWait=t,this._sequences=[],this._waiting=!0,"function"==typeof this.onWait&&this.onWait()}return t.prototype._next=function(){var t,e,n,r,i;for(e=null,i=this._sequences,n=0,r=i.length;r>n;n++)if(t=i[n],null!=t){if(t.empty())continue;e=t;break}return null!=e?e.next(this._next.bind(this)):(this._sequences=[],this._waiting=!0,"function"==typeof this.onWait?this.onWait():void 0)},t.prototype.then=function(t,e){return i.ok(null!=t,"The priority must be specified"),i.strictEqual(typeof t,"number","Priority must be a number"),i.strictEqual(~~t,t,"Priority must be an integer"),i.ok(t>=0,"Priority must be a positive integer"),i.ok(null!=e,"The function must be specified"),null==this._sequences[t]&&(this._sequences[t]=new r),this._sequences[t].add(e),this._waiting?(this._waiting=!1,this._next()):void 0},t}(),e.exports=n}).call(this)},{"./sequence":5,assert:9}],4:[function(t,e){(function(){var n,r;n=t("assert"),r=function(t,e){return n.ok(null!=t,"The minimum must be specified"),n.strictEqual(typeof t,"number","Min must be a Number"),n.strictEqual(~~t,t,"Min must be an integer"),n.ok(null!=e,"The maximum must be specified"),n.strictEqual(typeof e,"number","Max must be a Number"),n.strictEqual(~~e,e,"Max must be an integer"),n.strictEqual(e>=t,!0,"Min must be less than or equal to Max"),t===e?t:Math.floor(Math.random()*(e-t+1))+t},e.exports.integerInRange=r}).call(this)},{assert:9}],5:[function(t,e){(function(){var n,r;r=t("assert"),n=function(){function t(){this._queue=[]}return t.prototype.next=function(t){var e;return this.empty()?void 0:(e=this._queue.shift())(t)},t.prototype.add=function(t){return r.ok(null!=t,"The function must be specified"),this._queue.push(t)},t.prototype.empty=function(){return 0===this._queue.length},t}(),e.exports=n}).call(this)},{assert:9}],6:[function(t,e){(function(n){(function(){var r,i,o,u,s;o=t("assert"),r=t("./prioritysequence"),s=t("./random"),u=t("./charactergenerator"),i=function(){function t(){this._prioritySequence=new r(function(t){return function(){return t._sequenceLevel=0}}(this))}return t.prototype.setTargetDomElement=function(t){return o.ok(t instanceof Element,"TargetDomElement must be an instance of Element"),this.targetDomElement=t},t.prototype.setAccuracy=function(t){return o.strictEqual(typeof t,"number","Accuracy must be a number"),o.ok(t>0&&100>=t,"Accuracy must be greater than 0 and less than or equal to 100"),this.accuracy=t},t.prototype.setMinimumSpeed=function(t){return o.strictEqual(typeof t,"number","MinimumSpeed must be a number"),o.ok(t>0,"MinimumSpeed must be greater than 0"),this.minimumSpeed=null!=this.maximumSpeed&&t>this.maximumSpeed?this.maximumSpeed:t},t.prototype.setMaximumSpeed=function(t){return o.strictEqual(typeof t,"number","MaximumSpeed must be a number"),o.ok(t>0,"MaximumSpeed must be greater than 0"),this.maximumSpeed=null!=this.minimumSpeed&&this.minimumSpeed>t?minimumSpeed:t},t.prototype.setKeyboardLayout=function(t){return o.strictEqual(typeof t.getAdjacentCharacter,"function","KeyboardLayout must have an exported getAdjacentCharacter method"),this.keyboardLayout=t},t.prototype._makeChainable=function(t,e){var r;return r=Object.create(this),r._sequenceLevel=this._sequenceLevel,this._prioritySequence.then(this._sequenceLevel,function(i){return n.nextTick(function(){return e(function(){return null!=t&&t.call(r),i()})})}),null!=t&&this._sequenceLevel++,null==t||this.hasOwnProperty("_prioritySequence")?this:void 0},t.prototype.clear=function(t){return this._makeChainable(t,function(t){return function(e){for(var n;null!=(n=t.targetDomElement.lastChild);)t.targetDomElement.removeChild(n);return e()}}(this))},t.prototype.waitRange=function(t,e,n){return this._makeChainable(n,function(){return function(n){return setTimeout(n,s.integerInRange(t,e))}}(this))},t.prototype.wait=function(t,e){return this.waitRange(t,t,e)},t.prototype.put=function(t,e){return this._makeChainable(e,function(e){return function(n){var r,i;for(i=document.createElement("div"),i.innerHTML=t;null!=(r=i.firstChild);)e.targetDomElement.appendChild(r);return n()}}(this))},t.prototype["delete"]=function(t){return this._makeChainable(t,function(t){return function(e){return t.targetDomElement.removeChild(t.targetDomElement.lastChild),e()}}(this))},t.prototype.type=function(t,e){var n,r,i;for(r=(this.minimumSpeed+this.maximumSpeed)/2,i=u(this.keyboardLayout,this.accuracy,r,t);null!==(n=i.next());)"\b"!==n?this.put(n):this["delete"](),this.waitRange(~~(1e3/this.maximumSpeed),~~(1e3/this.minimumSpeed));return this.wait(0,e)},t}(),e.exports=i}).call(this)}).call(this,t("FWaASH"))},{"./charactergenerator":1,"./prioritysequence":3,"./random":4,FWaASH:13,assert:9}],OPj7T5:[function(t,e){(function(){var n,r,i;i=t("assert"),n=t("./typewriter"),r=function(e){var r;return r=new n,r.setTargetDomElement(e),{withAccuracy:function(t){return this.accuracy=t,r.setAccuracy(this.accuracy),this},withMinimumSpeed:function(t){return this.minimumSpeed=t,r.setMinimumSpeed(this.minimumSpeed),this},withMaximumSpeed:function(t){return this.maximumSpeed=t,r.setMaximumSpeed(this.maximumSpeed),this},withKeyboardLayout:function(t){return this.keyboardLayout=t,r.setKeyboardLayout(this.keyboardLayout),this},build:function(){return i.ok(null!=this.accuracy,"Accuracy must be set"),i.ok(null!=this.minimumSpeed,"MinimumSpeed must be set"),i.ok(null!=this.maximumSpeed,"MaximumSpeed must be set"),null==this.keyboardLayout&&r.setKeyboardLayout(t("./defaultkeyboardlayout")),r}}},e.exports=r}).call(this)},{"./defaultkeyboardlayout":2,"./typewriter":6,assert:9}],typewriter:[function(t,e){e.exports=t("OPj7T5")},{}],9:[function(t,e){function n(t,e){return p.isUndefined(e)?""+e:!p.isNumber(e)||!isNaN(e)&&isFinite(e)?p.isFunction(e)||p.isRegExp(e)?e.toString():e:e.toString()}function r(t,e){return p.isString(t)?t.length<e?t:t.slice(0,e):t}function i(t){return r(JSON.stringify(t.actual,n),128)+" "+t.operator+" "+r(JSON.stringify(t.expected,n),128)}function o(t,e,n,r,i){throw new d.AssertionError({message:n,actual:t,expected:e,operator:r,stackStartFunction:i})}function u(t,e){t||o(t,!0,e,"==",d.ok)}function s(t,e){if(t===e)return!0;if(p.isBuffer(t)&&p.isBuffer(e)){if(t.length!=e.length)return!1;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}return p.isDate(t)&&p.isDate(e)?t.getTime()===e.getTime():p.isRegExp(t)&&p.isRegExp(e)?t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase:p.isObject(t)||p.isObject(e)?c(t,e):t==e}function a(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function c(t,e){if(p.isNullOrUndefined(t)||p.isNullOrUndefined(e))return!1;if(t.prototype!==e.prototype)return!1;if(a(t))return a(e)?(t=m.call(t),e=m.call(e),s(t,e)):!1;try{var n,r,i=g(t),o=g(e)}catch(u){return!1}if(i.length!=o.length)return!1;for(i.sort(),o.sort(),r=i.length-1;r>=0;r--)if(i[r]!=o[r])return!1;for(r=i.length-1;r>=0;r--)if(n=i[r],!s(t[n],e[n]))return!1;return!0}function l(t,e){return t&&e?"[object RegExp]"==Object.prototype.toString.call(e)?e.test(t):t instanceof e?!0:e.call({},t)===!0?!0:!1:!1}function f(t,e,n,r){var i;p.isString(n)&&(r=n,n=null);try{e()}catch(u){i=u}if(r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),t&&!i&&o(i,n,"Missing expected exception"+r),!t&&l(i,n)&&o(i,n,"Got unwanted exception"+r),t&&i&&n&&!l(i,n)||!t&&i)throw i}var p=t("util/"),m=Array.prototype.slice,h=Object.prototype.hasOwnProperty,d=e.exports=u;d.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=i(this),this.generatedMessage=!0);var e=t.stackStartFunction||o;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var n=new Error;if(n.stack){var r=n.stack,u=e.name,s=r.indexOf("\n"+u);if(s>=0){var a=r.indexOf("\n",s+1);r=r.substring(a+1)}this.stack=r}}},p.inherits(d.AssertionError,Error),d.fail=o,d.ok=u,d.equal=function(t,e,n){t!=e&&o(t,e,n,"==",d.equal)},d.notEqual=function(t,e,n){t==e&&o(t,e,n,"!=",d.notEqual)},d.deepEqual=function(t,e,n){s(t,e)||o(t,e,n,"deepEqual",d.deepEqual)},d.notDeepEqual=function(t,e,n){s(t,e)&&o(t,e,n,"notDeepEqual",d.notDeepEqual)},d.strictEqual=function(t,e,n){t!==e&&o(t,e,n,"===",d.strictEqual)},d.notStrictEqual=function(t,e,n){t===e&&o(t,e,n,"!==",d.notStrictEqual)},d.throws=function(){f.apply(this,[!0].concat(m.call(arguments)))},d.doesNotThrow=function(){f.apply(this,[!1].concat(m.call(arguments)))},d.ifError=function(t){if(t)throw t};var g=Object.keys||function(t){var e=[];for(var n in t)h.call(t,n)&&e.push(n);return e}},{"util/":11}],10:[function(t,e){e.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},{}],11:[function(t,e,n){(function(e,r){function i(t,e){var r={seen:[],stylize:u};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),d(e)?r.showHidden=e:e&&n._extend(r,e),x(r.showHidden)&&(r.showHidden=!1),x(r.depth)&&(r.depth=2),x(r.colors)&&(r.colors=!1),x(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=o),a(r,t,r.depth)}function o(t,e){var n=i.styles[e];return n?"["+i.colors[n][0]+"m"+t+"["+i.colors[n][1]+"m":t}function u(t){return t}function s(t){var e={};return t.forEach(function(t){e[t]=!0}),e}function a(t,e,r){if(t.customInspect&&e&&O(e.inspect)&&e.inspect!==n.inspect&&(!e.constructor||e.constructor.prototype!==e)){var i=e.inspect(r,t);return v(i)||(i=a(t,i,r)),i}var o=c(t,e);if(o)return o;var u=Object.keys(e),d=s(u);if(t.showHidden&&(u=Object.getOwnPropertyNames(e)),k(e)&&(u.indexOf("message")>=0||u.indexOf("description")>=0))return l(e);if(0===u.length){if(O(e)){var g=e.name?": "+e.name:"";return t.stylize("[Function"+g+"]","special")}if(S(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(q(e))return t.stylize(Date.prototype.toString.call(e),"date");if(k(e))return l(e)}var y="",b=!1,w=["{","}"];if(h(e)&&(b=!0,w=["[","]"]),O(e)){var x=e.name?": "+e.name:"";y=" [Function"+x+"]"}if(S(e)&&(y=" "+RegExp.prototype.toString.call(e)),q(e)&&(y=" "+Date.prototype.toUTCString.call(e)),k(e)&&(y=" "+l(e)),0===u.length&&(!b||0==e.length))return w[0]+y+w[1];if(0>r)return S(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special");t.seen.push(e);var E;return E=b?f(t,e,r,d,u):u.map(function(n){return p(t,e,r,d,n,b)}),t.seen.pop(),m(E,y,w)}function c(t,e){if(x(e))return t.stylize("undefined","undefined");if(v(e)){var n="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(n,"string")}return b(e)?t.stylize(""+e,"number"):d(e)?t.stylize(""+e,"boolean"):g(e)?t.stylize("null","null"):void 0}function l(t){return"["+Error.prototype.toString.call(t)+"]"}function f(t,e,n,r,i){for(var o=[],u=0,s=e.length;s>u;++u)o.push(D(e,String(u))?p(t,e,n,r,String(u),!0):"");return i.forEach(function(i){i.match(/^\d+$/)||o.push(p(t,e,n,r,i,!0))}),o}function p(t,e,n,r,i,o){var u,s,c;if(c=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]},c.get?s=c.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):c.set&&(s=t.stylize("[Setter]","special")),D(r,i)||(u="["+i+"]"),s||(t.seen.indexOf(c.value)<0?(s=g(n)?a(t,c.value,null):a(t,c.value,n-1),s.indexOf("\n")>-1&&(s=o?s.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+s.split("\n").map(function(t){return" "+t}).join("\n"))):s=t.stylize("[Circular]","special")),x(u)){if(o&&i.match(/^\d+$/))return s;u=JSON.stringify(""+i),u.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(u=u.substr(1,u.length-2),u=t.stylize(u,"name")):(u=u.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),u=t.stylize(u,"string"))}return u+": "+s}function m(t,e,n){var r=0,i=t.reduce(function(t,e){return r++,e.indexOf("\n")>=0&&r++,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?n[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+n[1]:n[0]+e+" "+t.join(", ")+" "+n[1]}function h(t){return Array.isArray(t)}function d(t){return"boolean"==typeof t}function g(t){return null===t}function y(t){return null==t}function b(t){return"number"==typeof t}function v(t){return"string"==typeof t}function w(t){return"symbol"==typeof t}function x(t){return void 0===t}function S(t){return E(t)&&"[object RegExp]"===_(t)}function E(t){return"object"==typeof t&&null!==t}function q(t){return E(t)&&"[object Date]"===_(t)}function k(t){return E(t)&&("[object Error]"===_(t)||t instanceof Error)}function O(t){return"function"==typeof t}function j(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||"undefined"==typeof t}function _(t){return Object.prototype.toString.call(t)}function A(t){return 10>t?"0"+t.toString(10):t.toString(10)}function M(){var t=new Date,e=[A(t.getHours()),A(t.getMinutes()),A(t.getSeconds())].join(":");return[t.getDate(),N[t.getMonth()],e].join(" ")}function D(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var C=/%[sdj%]/g;n.format=function(t){if(!v(t)){for(var e=[],n=0;n<arguments.length;n++)e.push(i(arguments[n]));return e.join(" ")}for(var n=1,r=arguments,o=r.length,u=String(t).replace(C,function(t){if("%%"===t)return"%";if(n>=o)return t;switch(t){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return t}}),s=r[n];o>n;s=r[++n])u+=g(s)||!E(s)?" "+s:" "+i(s);return u},n.deprecate=function(t,i){function o(){if(!u){if(e.throwDeprecation)throw new Error(i);e.traceDeprecation?console.trace(i):console.error(i),u=!0}return t.apply(this,arguments)}if(x(r.process))return function(){return n.deprecate(t,i).apply(this,arguments)};if(e.noDeprecation===!0)return t;var u=!1;return o};var L,T={};n.debuglog=function(t){if(x(L)&&(L=e.env.NODE_DEBUG||""),t=t.toUpperCase(),!T[t])if(new RegExp("\\b"+t+"\\b","i").test(L)){var r=e.pid;T[t]=function(){var e=n.format.apply(n,arguments);console.error("%s %d: %s",t,r,e)}}else T[t]=function(){};return T[t]},n.inspect=i,i.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},i.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},n.isArray=h,n.isBoolean=d,n.isNull=g,n.isNullOrUndefined=y,n.isNumber=b,n.isString=v,n.isSymbol=w,n.isUndefined=x,n.isRegExp=S,n.isObject=E,n.isDate=q,n.isError=k,n.isFunction=O,n.isPrimitive=j,n.isBuffer=t("./support/isBuffer");var N=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];n.log=function(){console.log("%s - %s",M(),n.format.apply(n,arguments))},n.inherits=t("inherits"),n._extend=function(t,e){if(!e||!E(e))return t;for(var n=Object.keys(e),r=n.length;r--;)t[n[r]]=e[n[r]];return t}}).call(this,t("FWaASH"),"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":10,FWaASH:13,inherits:12}],12:[function(t,e){e.exports="function"==typeof Object.create?function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},{}],13:[function(t,e){function n(){}var r=e.exports={};r.nextTick=function(){var t="undefined"!=typeof window&&window.setImmediate,e="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(t)return function(t){return window.setImmediate(t)};if(e){var n=[];return window.addEventListener("message",function(t){var e=t.source;if((e===window||null===e)&&"process-tick"===t.data&&(t.stopPropagation(),n.length>0)){var r=n.shift();r()}},!0),function(t){n.push(t),window.postMessage("process-tick","*")}}return function(t){setTimeout(t,0)}}(),r.title="browser",r.browser=!0,r.env={},r.argv=[],r.on=n,r.addListener=n,r.once=n,r.off=n,r.removeListener=n,r.removeAllListeners=n,r.emit=n,r.binding=function(){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(){throw new Error("process.chdir is not supported")}},{}]},{},[]); |
6
transfersh-web/styles/bootstrap.less
14
transfersh-web/styles/includes/global.less
12
transfersh-web/styles/includes/home.less
22
transfersh-web/styles/includes/pages.less
200
transfersh-web/styles/includes/preview.less
@@ -0,0 +1,200 @@ | ||
+.preview-wrapper { | ||
+ padding-bottom: 30px; | ||
+} | ||
+ | ||
+html { | ||
+ min-height:100%; | ||
+} | ||
+#download { | ||
+position: static; | ||
+ footer { | ||
+ bottom: 0; | ||
+ left: 0; | ||
+ width: 100%; | ||
+ position: absolute; | ||
+ z-index: -1; | ||
+ } | ||
+} | ||
+ | ||
+.preview-image { | ||
+ img { | ||
+ margin: 0 auto; | ||
+ display:block; | ||
+ max-width: 800px; | ||
+ max-width: 100%; | ||
+ } | ||
+padding: 0; | ||
+padding: 0px; | ||
+} | ||
+ | ||
+.overlay { | ||
+ position: fixed; | ||
+ z-index: 100; | ||
+ top: 0; | ||
+ left: 0; | ||
+ right: 0; | ||
+ bottom: 0; | ||
+ background-color: rgba(0,0,0,0.10); | ||
+ visibility: hidden; | ||
+ opacity: 0; | ||
+ transition: opacity 0.2s ease; | ||
+ .active & { | ||
+ visibility: visible; | ||
+ opacity: 1; | ||
+ } | ||
+} | ||
+ | ||
+.copy-link-wrapper { | ||
+ z-index: 200; | ||
+ padding: 2em; | ||
+ position: fixed; | ||
+ top: 50%; | ||
+ left: 50%; | ||
+ width: 50%; | ||
+ max-width: 500px; | ||
+ min-width: 300px; | ||
+ background-color: @blue; | ||
+ border-radius: 2px; | ||
+ transform: translateX(-50%) translateY(-50%); | ||
+ opacity: 0; | ||
+ transition: opacity 0.2s ease; | ||
+ clip:rect(1px 1px 1px 1px); | ||
+ opacity: 0; | ||
+ top: -9999999px; | ||
+ left: -9999999px; | ||
+ .active & { | ||
+ clip: auto; | ||
+ opacity: 1; | ||
+ top: 50%; | ||
+ left: 50%; | ||
+ } | ||
+ p { | ||
+ font-size: 20px; | ||
+ color: #fff; | ||
+ } | ||
+ input { | ||
+ background-color: @light-gray; | ||
+ color: @text-color; | ||
+ border: 0; | ||
+ font-size: 1em; | ||
+ padding: 1em; | ||
+ margin: 0; | ||
+ width: 100%; | ||
+ border-radius: 2px; | ||
+ white-space: nowrap; | ||
+ overflow: hidden; | ||
+ text-overflow: ellipsis; | ||
+ } | ||
+ .error { | ||
+ text-align: center; | ||
+ color: #E7483B; | ||
+ display: block; | ||
+ padding: 0.5em; | ||
+ } | ||
+} | ||
+ | ||
+#md-preview,{ | ||
+ padding-bottom: 30px; | ||
+} | ||
+ | ||
+ | ||
+video { | ||
+ margin: 0 auto; | ||
+ width: 100%; | ||
+} | ||
+ | ||
+ | ||
+.wrap { | ||
+ width: 40%; | ||
+ height: 40%; | ||
+ margin: 20px auto; | ||
+} | ||
+ | ||
+video { | ||
+ width: 100%; | ||
+} | ||
+ | ||
+video::-webkit-media-controls-enclosure { | ||
+ padding: 0px; | ||
+ height: 50px; | ||
+} | ||
+ | ||
+video::-webkit-media-controls-panel { | ||
+ opacity: 1 !important; | ||
+ display: -webkit-flex !important; | ||
+ margin-top: 50px; | ||
+ height: 50px; | ||
+ background-color: @dark-blue; | ||
+ border-radius: 0 0 10px 10px; | ||
+} | ||
+ | ||
+video::-webkit-media-controls-timeline { | ||
+ height: 12px; | ||
+ padding: 0px; | ||
+ border: 0px; | ||
+} | ||
+ | ||
+video::-webkit-media-controls-volume-slider, video::-webkit-media-controls-timeline { | ||
+ height: 12px; | ||
+ border-radius: 5px; | ||
+ min-width: 15px; | ||
+} | ||
+ | ||
+video::-webkit-media-controls-volume-slider::-webkit-media-slider-container, video::-webkit-media-controls-timeline::-webkit-media-slider-container { | ||
+ border: 0px; | ||
+ border-radius: 5px; | ||
+ background-color: @blue; | ||
+ cursor: pointer; | ||
+} | ||
+ | ||
+::-webkit-media-slider-thumb { | ||
+ -webkit-appearance: none; | ||
+ background: red; | ||
+} | ||
+ | ||
+video::-webkit-media-controls-play-button { | ||
+ cursor: pointer; | ||
+ | ||
+} | ||
+ | ||
+video::-webkit-media-controls-play-button:hover { | ||
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; | ||
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70); | ||
+ opacity: 0.7; | ||
+} | ||
+ | ||
+video::-webkit-media-controls-fullscreen-button { | ||
+ -webkit-appearance: none; | ||
+ background-color: transparent; | ||
+ cursor: pointer; | ||
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAABACAYAAADF2C3zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2N0Q1MjA3MDc5NjYxMUUyQjQzRjk5Mjc1MTU5Qjk0NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2N0Q1MjA3MTc5NjYxMUUyQjQzRjk5Mjc1MTU5Qjk0NSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQyQkE2QUZGNzkzQjExRTJCNDNGOTkyNzUxNTlCOTQ1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQyQkE2QjAwNzkzQjExRTJCNDNGOTkyNzUxNTlCOTQ1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1z7uaAAAAVhJREFUeNrsljFuAjEQRb3ACZByii2pECmgySFIGoiUGsEKiaQAimwTToCggSYSNUoJHSfgFJwhMt9oHBlj8Ga2SAqP9KQV7PPY4y1+9PDYEZ4agaHrj4Lwl5LHXFkvsOXKatt1jjykzrq2WeW+Jb6Bhp5BySOvQQLuaKEPYwYnOQLSkpTwBfbUqQam9hDVtieOyaoOGxDTAtNrV9UFqTEc/UGUQeXWmfSZB6BqXMc3aIFlFllY4hP49N2h66p2YJXly3HJ92ABihxZVRPM6BqvViSlFNwqiBwV5CAHOchBDnKQ/5/si4/iOUn5YX0+ec0X1mkBXljH1nlhncTfh3WIF2EdR/gJ677OKqwfdOqHmJ4Nsd17PwU5E/yWgJieY/Biv6MoUVjvOe61j+cGuuwpsLvDOl5KjeFkDusRtiSNKZ6FdXTlhXWIfxTWcf58YR0L3AzrRwEGAJoOgCMfh6hiAAAAAElFTkSuQmCC); | ||
+ background-size: 16px 64px; | ||
+ background-position: center 8px; | ||
+ background-repeat: no-repeat; | ||
+} | ||
+ | ||
+video::-webkit-media-controls-mute-button { | ||
+ -webkit-appearance: none; | ||
+ background-color: transparent; | ||
+ cursor: pointer; | ||
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAABACAYAAAATffeWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2N0Q1MjA3NDc5NjYxMUUyQjQzRjk5Mjc1MTU5Qjk0NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2N0Q1MjA3NTc5NjYxMUUyQjQzRjk5Mjc1MTU5Qjk0NSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjY3RDUyMDcyNzk2NjExRTJCNDNGOTkyNzUxNTlCOTQ1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY3RDUyMDczNzk2NjExRTJCNDNGOTkyNzUxNTlCOTQ1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Gp0GRAAAATdJREFUeNpidIsuYMABwoF4BhCvB+IkXIqYcIj7APEiIBYA4jg0OREgLsJnQAgQrwJiNiifGU3eFIi7gDgPxGEBYnYg1gBiDqizQX5ixOEyCyDeC8SNQNwJxJtABuwHYksGwoAR6q3tQFwKxGlAnMtEpGYQ+A+1NROI+aDedGdiIA2sAWJWaDhcBGIVUg1ABqz4ohEXAMXQbyA+DcRaQHwHZMBxIjWDArEcmrg+AXEYEO8ExYIjUjRGQuOXEUcgghLVOahBoAQ1GWTAT2iAgMBJID4BxPOhBqIDkJwnENcDcQkQP8AWBiuAOBiIf0H5f9HkT0NdMAFfIG4D4gggfgtNPMjgDRD3wgPm////DJSAUQNGDRg1YNSAUQNGDRg1YNSA4WhAUnHraI9ltMcy2mMZDD0WgAADADYlybDQKXdAAAAAAElFTkSuQmCC); | ||
+ background-size: 16px 64px; | ||
+ background-position: center 8px; | ||
+ background-repeat: no-repeat; | ||
+} | ||
+ | ||
+video::-webkit-media-controls-fullscreen-button:hover { | ||
+ -webkit-appearance: none; | ||
+ background-position: center -42px; | ||
+} | ||
+ | ||
+video::-webkit-media-controls-mute-button:hover { | ||
+ -webkit-appearance: none; | ||
+ background-position: center -43px; | ||
+} | ||
+ | ||
+video::-webkit-media-controls-current-time-display, video::-webkit-media-controls-time-remaining-display { | ||
+ | ||
+ font-size: 13px; | ||
+ font-weight: normal; | ||
+} |
30
transfersh-web/styles/includes/reviews.less
763
transfersh-web/styles/main.css
2
transfersh-web/styles/main.css.map
1 addition,
1 deletion
not shown because the diff is too large. Please use a local Git client to view these changes.
1
transfersh-web/styles/main.less
0 comments on commit
6b251ec