docker, previews, tor, bugfixes
* implemented docker * added previews (markdown, html, text, video, audio) * added tor support * several bugfixes
16
.dockerignore
Normal file
|
@ -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
Normal file
|
@ -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
vendored
|
@ -13,3 +13,4 @@ bower_components/
|
||||||
node_modules/
|
node_modules/
|
||||||
|
|
||||||
transfersh-server/run.sh
|
transfersh-server/run.sh
|
||||||
|
.elasticbeanstalk/
|
||||||
|
|
|
@ -5,7 +5,7 @@ RUN mkdir -p /go/src/app
|
||||||
WORKDIR /go/src/app
|
WORKDIR /go/src/app
|
||||||
|
|
||||||
# Copy the local package files to the container's workspace.
|
# Copy the local package files to the container's workspace.
|
||||||
ADD . /go/src/app
|
ADD ./transfersh-server /go/src/app
|
||||||
|
|
||||||
# install dependencies
|
# install dependencies
|
||||||
RUN go get ./
|
RUN go get ./
|
34
Gruntfile.js
|
@ -28,6 +28,10 @@ module.exports = function (grunt) {
|
||||||
gruntfile: {
|
gruntfile: {
|
||||||
files: ['Gruntfile.js']
|
files: ['Gruntfile.js']
|
||||||
},
|
},
|
||||||
|
includes: {
|
||||||
|
files: ['<%= yeoman.app %>/*.html', '.tmp/*.html'],
|
||||||
|
tasks: ['includes:server']
|
||||||
|
},
|
||||||
livereload: {
|
livereload: {
|
||||||
options: {
|
options: {
|
||||||
livereload: '<%= connect.options.livereload %>'
|
livereload: '<%= connect.options.livereload %>'
|
||||||
|
@ -37,7 +41,8 @@ module.exports = function (grunt) {
|
||||||
'{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css',
|
'{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css',
|
||||||
'{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
|
'{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
|
||||||
'<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
|
'<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
|
||||||
]
|
],
|
||||||
|
tasks: ['includes:server']
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
connect: {
|
connect: {
|
||||||
|
@ -112,6 +117,27 @@ module.exports = function (grunt) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
includes: {
|
||||||
|
build: {
|
||||||
|
cwd: '<%= yeoman.app %>',
|
||||||
|
src: ['*.html', 'includes/*.html'],
|
||||||
|
dest: '<%= yeoman.dist %>',
|
||||||
|
options: {
|
||||||
|
flatten: true,
|
||||||
|
banner: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
server: {
|
||||||
|
cwd: '<%= yeoman.app %>',
|
||||||
|
src: ['*.html', 'includes/*.html'],
|
||||||
|
dest: '.tmp/',
|
||||||
|
options: {
|
||||||
|
flatten: true,
|
||||||
|
banner: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
// not used since Uglify task does concat,
|
// not used since Uglify task does concat,
|
||||||
// but still available if needed
|
// but still available if needed
|
||||||
/*concat: {
|
/*concat: {
|
||||||
|
@ -240,6 +266,7 @@ module.exports = function (grunt) {
|
||||||
grunt.task.run([
|
grunt.task.run([
|
||||||
'clean:server',
|
'clean:server',
|
||||||
'less',
|
'less',
|
||||||
|
'includes:server',
|
||||||
'copy:server',
|
'copy:server',
|
||||||
'connect:livereload',
|
'connect:livereload',
|
||||||
'watch'
|
'watch'
|
||||||
|
@ -260,14 +287,17 @@ module.exports = function (grunt) {
|
||||||
|
|
||||||
grunt.registerTask('build', [
|
grunt.registerTask('build', [
|
||||||
'clean:dist',
|
'clean:dist',
|
||||||
|
|
||||||
'copy:server',
|
'copy:server',
|
||||||
'useminPrepare',
|
'useminPrepare',
|
||||||
'concurrent',
|
'concurrent',
|
||||||
'cssmin',
|
'cssmin',
|
||||||
'concat',
|
'concat',
|
||||||
|
'includes:build',
|
||||||
'uglify',
|
'uglify',
|
||||||
'copy',
|
'copy',
|
||||||
'usemin'
|
'usemin',
|
||||||
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
grunt.registerTask('default', [
|
grunt.registerTask('default', [
|
||||||
|
|
10
README.md
|
@ -62,6 +62,16 @@ go run transfersh-server/*.go -provider=local --port 8080 --temp=/tmp/ --basedir
|
||||||
go build -o transfersh-server *.go
|
go build -o transfersh-server *.go
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Docker
|
||||||
|
|
||||||
|
For easy deployment we've enabled Docker deployment.
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ./transfer-server/
|
||||||
|
docker build -t transfersh .
|
||||||
|
docker run --publish 8080:8080 --rm transfersh --provider local --basedir /tmp/
|
||||||
|
```
|
||||||
|
|
||||||
## Contributions
|
## Contributions
|
||||||
|
|
||||||
Contributions are welcome.
|
Contributions are welcome.
|
||||||
|
|
|
@ -18,6 +18,8 @@
|
||||||
"grunt-contrib-less": "~0.11.4",
|
"grunt-contrib-less": "~0.11.4",
|
||||||
"grunt-contrib-uglify": "~0.6.0",
|
"grunt-contrib-uglify": "~0.6.0",
|
||||||
"grunt-contrib-watch": "~0.6.1",
|
"grunt-contrib-watch": "~0.6.1",
|
||||||
|
"grunt-include-replace": "^2.0.0",
|
||||||
|
"grunt-includes": "^0.4.5",
|
||||||
"grunt-rev": "~0.1.0",
|
"grunt-rev": "~0.1.0",
|
||||||
"grunt-svgmin": "1.0.0",
|
"grunt-svgmin": "1.0.0",
|
||||||
"grunt-usemin": "~2.4.0",
|
"grunt-usemin": "~2.4.0",
|
||||||
|
|
|
@ -35,9 +35,9 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/dutchcoders/go-clamd"
|
"github.com/dutchcoders/go-clamd"
|
||||||
"github.com/golang/gddo/httputil/header"
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/kennygrant/sanitize"
|
"github.com/kennygrant/sanitize"
|
||||||
|
"github.com/russross/blackfriday"
|
||||||
html_template "html/template"
|
html_template "html/template"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
@ -57,23 +57,94 @@ func healthHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
fmt.Fprintf(w, "Approaching Neutral Zone, all systems normal and functioning.")
|
fmt.Fprintf(w, "Approaching Neutral Zone, all systems normal and functioning.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The preview handler will show a preview of the content for browsers (accept type text/html), and referer is not transfer.sh */
|
||||||
|
func previewHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
|
||||||
|
token := vars["token"]
|
||||||
|
filename := vars["filename"]
|
||||||
|
|
||||||
|
contentType, contentLength, err := storage.Head(token, filename)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, http.StatusText(404), 404)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var templatePath string
|
||||||
|
var content html_template.HTML
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case strings.HasPrefix(contentType, "image/"):
|
||||||
|
templatePath = "download.image.html"
|
||||||
|
case strings.HasPrefix(contentType, "video/"):
|
||||||
|
templatePath = "download.video.html"
|
||||||
|
case strings.HasPrefix(contentType, "audio/"):
|
||||||
|
templatePath = "download.audio.html"
|
||||||
|
case strings.HasPrefix(contentType, "text/"):
|
||||||
|
templatePath = "download.markdown.html"
|
||||||
|
|
||||||
|
var reader io.ReadCloser
|
||||||
|
if reader, _, _, err = storage.Get(token, filename); err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var data []byte
|
||||||
|
if data, err = ioutil.ReadAll(reader); err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.HasPrefix(contentType, "text/x-markdown") || strings.HasPrefix(contentType, "text/markdown") {
|
||||||
|
output := blackfriday.MarkdownCommon(data)
|
||||||
|
content = html_template.HTML(output)
|
||||||
|
} else if strings.HasPrefix(contentType, "text/plain") {
|
||||||
|
content = html_template.HTML(fmt.Sprintf("<pre>%s</pre>", data))
|
||||||
|
} else {
|
||||||
|
content = html_template.HTML(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
templatePath = "download.markdown.html"
|
||||||
|
default:
|
||||||
|
templatePath = "download.html"
|
||||||
|
}
|
||||||
|
|
||||||
|
tmpl, err := html_template.New(templatePath).Funcs(html_template.FuncMap{"format": formatNumber}).ParseFiles("static/" + templatePath)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data := struct {
|
||||||
|
ContentType string
|
||||||
|
Content html_template.HTML
|
||||||
|
Filename string
|
||||||
|
Url string
|
||||||
|
ContentLength uint64
|
||||||
|
}{
|
||||||
|
contentType,
|
||||||
|
content,
|
||||||
|
filename,
|
||||||
|
r.URL.String(),
|
||||||
|
contentLength,
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := tmpl.ExecuteTemplate(w, templatePath, data); err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// this handler will output html or text, depending on the
|
// this handler will output html or text, depending on the
|
||||||
// support of the client (Accept header).
|
// support of the client (Accept header).
|
||||||
|
|
||||||
func viewHandler(w http.ResponseWriter, r *http.Request) {
|
func viewHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
// vars := mux.Vars(r)
|
// vars := mux.Vars(r)
|
||||||
|
|
||||||
actual := header.ParseAccept(r.Header, "Accept")
|
if acceptsHtml(r.Header) {
|
||||||
|
|
||||||
html := false
|
|
||||||
|
|
||||||
for _, s := range actual {
|
|
||||||
if s.Value == "text/html" {
|
|
||||||
html = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if html {
|
|
||||||
tmpl, err := html_template.ParseFiles("static/index.html")
|
tmpl, err := html_template.ParseFiles("static/index.html")
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -106,7 +177,7 @@ func notFoundHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
func postHandler(w http.ResponseWriter, r *http.Request) {
|
func postHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
if err := r.ParseMultipartForm(_24K); nil != err {
|
if err := r.ParseMultipartForm(_24K); nil != err {
|
||||||
log.Println(err)
|
log.Printf("%s", err.Error())
|
||||||
http.Error(w, "Error occured copying to output stream", 500)
|
http.Error(w, "Error occured copying to output stream", 500)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -128,7 +199,7 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
if f, err = fheader.Open(); err != nil {
|
if f, err = fheader.Open(); err != nil {
|
||||||
log.Print(err)
|
log.Printf("%s", err.Error())
|
||||||
http.Error(w, err.Error(), 500)
|
http.Error(w, err.Error(), 500)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -137,7 +208,7 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
n, err := io.CopyN(&b, f, _24K+1)
|
n, err := io.CopyN(&b, f, _24K+1)
|
||||||
if err != nil && err != io.EOF {
|
if err != nil && err != io.EOF {
|
||||||
log.Print(err)
|
log.Printf("%s", err.Error())
|
||||||
http.Error(w, err.Error(), 500)
|
http.Error(w, err.Error(), 500)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -155,7 +226,7 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Remove(file.Name())
|
os.Remove(file.Name())
|
||||||
|
|
||||||
log.Print(err)
|
log.Printf("%s", err.Error())
|
||||||
http.Error(w, err.Error(), 500)
|
http.Error(w, err.Error(), 500)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -170,7 +241,7 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
log.Printf("Uploading %s %s %d %s", token, filename, contentLength, contentType)
|
log.Printf("Uploading %s %s %d %s", token, filename, contentLength, contentType)
|
||||||
|
|
||||||
if err = storage.Put(token, filename, reader, contentType, uint64(contentLength)); err != nil {
|
if err = storage.Put(token, filename, reader, contentType, uint64(contentLength)); err != nil {
|
||||||
log.Print(err)
|
log.Printf("%s", err.Error())
|
||||||
http.Error(w, err.Error(), 500)
|
http.Error(w, err.Error(), 500)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -199,7 +270,9 @@ func scanHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
response, err := c.ScanStream(reader)
|
response, err := c.ScanStream(reader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Printf("%s", err.Error())
|
||||||
http.Error(w, err.Error(), 500)
|
http.Error(w, err.Error(), 500)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var b string
|
var b string
|
||||||
|
@ -237,7 +310,7 @@ func putHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
n, err := io.CopyN(&b, f, _24K+1)
|
n, err := io.CopyN(&b, f, _24K+1)
|
||||||
if err != nil && err != io.EOF {
|
if err != nil && err != io.EOF {
|
||||||
log.Print(err)
|
log.Printf("%s", err.Error())
|
||||||
http.Error(w, err.Error(), 500)
|
http.Error(w, err.Error(), 500)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -245,7 +318,7 @@ func putHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
if n > _24K {
|
if n > _24K {
|
||||||
file, err := ioutil.TempFile(config.Temp, "transfer-")
|
file, err := ioutil.TempFile(config.Temp, "transfer-")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
log.Printf("%s", err.Error())
|
||||||
http.Error(w, err.Error(), 500)
|
http.Error(w, err.Error(), 500)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -255,8 +328,7 @@ func putHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
n, err = io.Copy(file, io.MultiReader(&b, f))
|
n, err = io.Copy(file, io.MultiReader(&b, f))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.Remove(file.Name())
|
os.Remove(file.Name())
|
||||||
|
log.Printf("%s", err.Error())
|
||||||
log.Print(err)
|
|
||||||
http.Error(w, err.Error(), 500)
|
http.Error(w, err.Error(), 500)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -282,6 +354,7 @@ func putHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
if err = storage.Put(token, filename, reader, contentType, uint64(contentLength)); err != nil {
|
if err = storage.Put(token, filename, reader, contentType, uint64(contentLength)); err != nil {
|
||||||
|
log.Printf("%s", err.Error())
|
||||||
http.Error(w, errors.New("Could not save file").Error(), 500)
|
http.Error(w, errors.New("Could not save file").Error(), 500)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -307,10 +380,17 @@ func zipHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
zw := zip.NewWriter(w)
|
zw := zip.NewWriter(w)
|
||||||
|
|
||||||
for _, key := range strings.Split(files, ",") {
|
for _, key := range strings.Split(files, ",") {
|
||||||
token := sanitize.Path(strings.Split(key, "/")[0])
|
if strings.HasPrefix(key, "/") {
|
||||||
|
key = key[1:]
|
||||||
|
}
|
||||||
|
|
||||||
|
key = strings.Replace(key, "\\", "/", -1)
|
||||||
|
|
||||||
|
token := strings.Split(key, "/")[0]
|
||||||
filename := sanitize.Path(strings.Split(key, "/")[1])
|
filename := sanitize.Path(strings.Split(key, "/")[1])
|
||||||
|
|
||||||
reader, _, _, err := storage.Get(token, filename)
|
reader, _, _, err := storage.Get(token, filename)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err.Error() == "The specified key does not exist." {
|
if err.Error() == "The specified key does not exist." {
|
||||||
http.Error(w, "File not found", 404)
|
http.Error(w, "File not found", 404)
|
||||||
|
@ -371,8 +451,14 @@ func tarGzHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
defer zw.Close()
|
defer zw.Close()
|
||||||
|
|
||||||
for _, key := range strings.Split(files, ",") {
|
for _, key := range strings.Split(files, ",") {
|
||||||
|
if strings.HasPrefix(key, "/") {
|
||||||
|
key = key[1:]
|
||||||
|
}
|
||||||
|
|
||||||
|
key = strings.Replace(key, "\\", "/", -1)
|
||||||
|
|
||||||
token := strings.Split(key, "/")[0]
|
token := strings.Split(key, "/")[0]
|
||||||
filename := strings.Split(key, "/")[1]
|
filename := sanitize.Path(strings.Split(key, "/")[1])
|
||||||
|
|
||||||
reader, _, contentLength, err := storage.Get(token, filename)
|
reader, _, contentLength, err := storage.Get(token, filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -482,23 +568,11 @@ func getHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
w.Header().Set("Content-Type", contentType)
|
w.Header().Set("Content-Type", contentType)
|
||||||
w.Header().Set("Content-Length", strconv.FormatUint(contentLength, 10))
|
w.Header().Set("Content-Length", strconv.FormatUint(contentLength, 10))
|
||||||
|
|
||||||
mediaType, _, _ := mime.ParseMediaType(contentType)
|
|
||||||
|
|
||||||
switch {
|
|
||||||
case mediaType == "text/html":
|
|
||||||
w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=\"%s\"", filename))
|
w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=\"%s\"", filename))
|
||||||
break
|
|
||||||
case strings.HasPrefix(mediaType, "text"):
|
|
||||||
case mediaType == "":
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=\"%s\"", filename))
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Header().Set("Connection", "close")
|
w.Header().Set("Connection", "close")
|
||||||
|
|
||||||
if _, err = io.Copy(w, reader); err != nil {
|
if _, err = io.Copy(w, reader); err != nil {
|
||||||
|
log.Printf("%s", err.Error())
|
||||||
http.Error(w, "Error occured copying to output stream", 500)
|
http.Error(w, "Error occured copying to output stream", 500)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,9 @@ import (
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"log"
|
"log"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
"mime"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -86,23 +88,27 @@ func main() {
|
||||||
r.HandleFunc("/({files:.*}).tar.gz", tarGzHandler).Methods("GET")
|
r.HandleFunc("/({files:.*}).tar.gz", tarGzHandler).Methods("GET")
|
||||||
r.HandleFunc("/download/{token}/{filename}", getHandler).Methods("GET")
|
r.HandleFunc("/download/{token}/{filename}", getHandler).Methods("GET")
|
||||||
|
|
||||||
/*r.HandleFunc("/{token}/{filename}", viewHandler).MatcherFunc(func(r *http.Request, rm *mux.RouteMatch) bool {
|
r.HandleFunc("/{token}/{filename}", previewHandler).MatcherFunc(func(r *http.Request, rm *mux.RouteMatch) (match bool) {
|
||||||
|
match = false
|
||||||
|
|
||||||
|
// The file will show a preview page when opening the link in browser directly or
|
||||||
|
// from external link. If the referer url path and current path are the same it will be
|
||||||
|
// downloaded.
|
||||||
|
if !acceptsHtml(r.Header) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
match = (r.Referer() == "")
|
||||||
|
|
||||||
u, err := url.Parse(r.Referer())
|
u, err := url.Parse(r.Referer())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
return true
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if u.Host == "transfer.sh" {
|
match = match || (u.Path != r.URL.Path)
|
||||||
return false
|
return
|
||||||
}
|
}).Methods("GET")
|
||||||
|
|
||||||
if u.Host == "" {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}).Methods("GET")*/
|
|
||||||
|
|
||||||
r.HandleFunc("/{token}/{filename}", getHandler).Methods("GET")
|
r.HandleFunc("/{token}/{filename}", getHandler).Methods("GET")
|
||||||
r.HandleFunc("/get/{token}/{filename}", getHandler).Methods("GET")
|
r.HandleFunc("/get/{token}/{filename}", getHandler).Methods("GET")
|
||||||
|
@ -156,7 +162,9 @@ func main() {
|
||||||
log.Panic("Error while creating storage.")
|
log.Panic("Error while creating storage.")
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Transfer.sh server started. :%v using temp folder: %s", *port, config.Temp)
|
mime.AddExtensionType(".md", "text/x-markdown")
|
||||||
|
|
||||||
|
log.Printf("Transfer.sh server started. :\nlistening on port: %v\nusing temp folder: %s\nusing storage provider: %s", *port, config.Temp, *provider)
|
||||||
log.Printf("---------------------------")
|
log.Printf("---------------------------")
|
||||||
|
|
||||||
s := &http.Server{
|
s := &http.Server{
|
||||||
|
|
132
transfersh-server/static/download.audio.html
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
After Width: | Height: | Size: 6 KiB |
|
@ -45,14 +45,14 @@
|
||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
||||||
<g
|
<g
|
||||||
transform="translate(-93.957497,-365.26607)"
|
transform="matrix(1,0,0,0.94456233,-93.957497,-345.57658)"
|
||||||
id="layer1">
|
id="layer1">
|
||||||
<path
|
<path
|
||||||
d="m 85.371201,355.16455 789.901059,0 0,49.98291 -789.901059,0 z"
|
d="m 93.957497,365.85895 750.000003,0 0,31.76074 -750.000003,0 z"
|
||||||
id="rect4487"
|
id="rect4487"
|
||||||
style="fill:#85b5bb;fill-opacity:1;stroke:none" />
|
style="fill:#85b5bb;fill-opacity:1;stroke:none" />
|
||||||
<g
|
<g
|
||||||
transform="matrix(1.4512649,0,0,-1.4512649,-114.5591,1453.446)"
|
transform="matrix(1.4512649,0,0,-1.4512649,-114.5591,1454.9192)"
|
||||||
id="g24"
|
id="g24"
|
||||||
style="fill:#ff7050">
|
style="fill:#ff7050">
|
||||||
<g
|
<g
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
transform="matrix(1.4512649,0,0,-1.4512649,-114.5591,1453.507)"
|
transform="matrix(1.4512649,0,0,-1.4512649,-114.5591,1454.9802)"
|
||||||
id="g40"
|
id="g40"
|
||||||
style="fill:#ffed5d">
|
style="fill:#ffed5d">
|
||||||
<g
|
<g
|
||||||
|
@ -104,7 +104,7 @@
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
transform="matrix(1.4512649,0,0,-1.4512649,-115.0147,1453.4765)"
|
transform="matrix(1.4512649,0,0,-1.4512649,-115.0147,1454.9497)"
|
||||||
id="g56"
|
id="g56"
|
||||||
style="fill:#93de7f">
|
style="fill:#93de7f">
|
||||||
<g
|
<g
|
||||||
|
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
6
transfersh-server/static/images/tor.svg
Normal file
After Width: | Height: | Size: 22 KiB |
5
transfersh-server/static/includes/download-bottom.html
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br/>
|
||||||
|
</section>
|
10
transfersh-server/static/includes/download-btn.html
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<script src="/scripts/main.js"></script>
|
||||||
|
|
15
transfersh-server/static/includes/navigation.html
Normal file
|
@ -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>
|
|
@ -11,16 +11,16 @@
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<title>transfer.sh - Easy and fast file sharing from the command-line.</title>
|
<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="description" content="Easy and fast file sharing from the command-line.">
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
|
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
|
||||||
<link rel="stylesheet" href="styles/main.css">
|
<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="https://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'>
|
||||||
<link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:400" rel="stylesheet" type="text/css">
|
<script src="/scripts/vendor/modernizr.js"></script>
|
||||||
<link href="http://fonts.googleapis.com/css?family=Droid+Sans+Mono" rel="stylesheet" type="text/css">
|
|
||||||
<script src="scripts/vendor/modernizr.js"></script>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -41,11 +41,15 @@
|
||||||
|
|
||||||
<div id="navigation">
|
<div id="navigation">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
|
<a href="/">
|
||||||
<h1>transfer.sh</h1>
|
<h1>transfer.sh</h1>
|
||||||
|
</a>
|
||||||
<ul class="hidden-xs">
|
<ul class="hidden-xs">
|
||||||
<li><a href="#samples">sample use cases</a>
|
<li><a href="/">home</a>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#contact">contact us</a>
|
<li><a href="/#samples">sample use cases</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="/#contact">contact us</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -53,7 +57,7 @@
|
||||||
|
|
||||||
<section id="home">
|
<section id="home">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<h2>
|
<h2 class="page-title">
|
||||||
Easy file sharing from the command line</h2>
|
Easy file sharing from the command line</h2>
|
||||||
<div class="row animated fadeInDown">
|
<div class="row animated fadeInDown">
|
||||||
<div id="from-terminal" class="box col-md-8 col-md-offset-2 col-xs-12">
|
<div id="from-terminal" class="box col-md-8 col-md-offset-2 col-xs-12">
|
||||||
|
@ -75,19 +79,20 @@
|
||||||
<code>
|
<code>
|
||||||
<br>
|
<br>
|
||||||
<span class="code-title"># Upload from web</span>
|
<span class="code-title"># Upload from web</span>
|
||||||
<br>Drag your files here, or <a class="browse" href="#"> click to browse.</a>
|
<br>Drag your files here, or <a class="browse" href="#"> click to browse. <br/></a>
|
||||||
|
|
||||||
</code>
|
</code>
|
||||||
<input type="file" multiple="multiple" style="display: none">
|
<input type="file" multiple="multiple" style='display: none;' />
|
||||||
<ul class="queue">
|
<ul class='queue'>
|
||||||
<li>
|
<li>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="all-files">
|
<div class='all-files'>
|
||||||
<br>
|
<br>
|
||||||
<div>
|
<div>
|
||||||
<span class="code-title"># Download all your files</span>
|
<span class="code-title"># Download all your files</span>
|
||||||
<br>
|
<br/>
|
||||||
<br>
|
<br/>
|
||||||
<a class="download-zip btn-cta" href="#">zip</a> <a class="download-tar btn-cta" href="#">tar.gz</a>
|
<a class="download-zip btn-cta" href="#">zip</a> <a class="download-tar btn-cta" href="#">tar.gz</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -95,16 +100,16 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<a href="#features" class="btn-cta btn-home">learn more </a>
|
<a href="#features" class="btn-cta btn-home">learn more</i> </a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div></section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section id="features">
|
<section id="features">
|
||||||
<div class="wrapper container">
|
<div class="wrapper container">
|
||||||
<div class="row animated fadeInDown">
|
<div class="row animated fadeInDown ">
|
||||||
<div class="col-md-3 col-xs-6">
|
<div class="col-md-3 col-xs-6">
|
||||||
<i class="icon-terminal"></i>
|
<i class="icon-terminal"></i>
|
||||||
<h3>Made for use with shell</h3>
|
<h3>Made for use with shell</h3>
|
||||||
|
@ -139,11 +144,11 @@
|
||||||
|
|
||||||
<section id="samples">
|
<section id="samples">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<h2>
|
<h2 class="page-title">
|
||||||
Sample use cases
|
Sample use cases
|
||||||
</h2>
|
</h2>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6 ">
|
||||||
<h3>How to upload</h3>
|
<h3>How to upload</h3>
|
||||||
<div class="terminal-top">
|
<div class="terminal-top">
|
||||||
|
|
||||||
|
@ -159,20 +164,21 @@
|
||||||
</code>
|
</code>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6 ">
|
||||||
<h3>Create an alias and add it to .bashrc or .zshrc</h3>
|
<h3>Create an alias and add it to .bashrc or .zshrc</h3>
|
||||||
<div class="terminal-top">
|
<div class="terminal-top">
|
||||||
</div>
|
</div>
|
||||||
<div class="terminal">
|
<div class="terminal">
|
||||||
<code>
|
<code>
|
||||||
<span class="code-title"># Add this to .bashrc or its equivalent</span>
|
<span class="code-title"># Add this to .bashrc or its equivalent</span>
|
||||||
<br>transfer() {
|
<br/>transfer() {
|
||||||
<br># write to output to tmpfile because of progress bar
|
<br># write to output to tmpfile because of progress bar
|
||||||
<br>tmpfile=$( mktemp -t transferXXX ); curl --progress-bar --upload-file $1 https://transfer.sh/$(basename $1) >> $tmpfile; cat $tmpfile; rm -f $tmpfile; }
|
<br>tmpfile=$( mktemp -t transferXXX ); basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9]/-/g'); curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile; cat $tmpfile; rm -f $tmpfile;
|
||||||
<br>
|
<br/>}
|
||||||
<br>alias transfer=transfer
|
<br/>
|
||||||
<br>
|
<br/>alias transfer=transfer
|
||||||
<br>
|
<br/>
|
||||||
|
<br/>
|
||||||
<span class="code-title"># Now you can use transfer command</span>
|
<span class="code-title"># Now you can use transfer command</span>
|
||||||
<br>$ transfer hello.txt
|
<br>$ transfer hello.txt
|
||||||
</code>
|
</code>
|
||||||
|
@ -183,9 +189,9 @@
|
||||||
|
|
||||||
<a class="btn-cta" data-target="#coll" data-toggle="collapse">More examples</a>
|
<a class="btn-cta" data-target="#coll" data-toggle="collapse">More examples</a>
|
||||||
|
|
||||||
<div class="collapse" id="coll">
|
<div class="collapse " id="coll">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6 ">
|
||||||
<h3>Upload multiple files at once</h3>
|
<h3>Upload multiple files at once</h3>
|
||||||
<div class="terminal-top">
|
<div class="terminal-top">
|
||||||
</div>
|
</div>
|
||||||
|
@ -196,13 +202,13 @@
|
||||||
<br>
|
<br>
|
||||||
<span class="code-title"># Combining downloads as zip or tar archive</span>
|
<span class="code-title"># Combining downloads as zip or tar archive</span>
|
||||||
<br>$ curl https://transfer.sh/(15HKz/hello.txt,15HKz/hello.txt).tar.gz
|
<br>$ curl https://transfer.sh/(15HKz/hello.txt,15HKz/hello.txt).tar.gz
|
||||||
<br>$ curl https://transfer.sh/(15HKz/hello.txt,15HKz/hello.txt).zip
|
<br/>$ curl https://transfer.sh/(15HKz/hello.txt,15HKz/hello.txt).zip
|
||||||
</code>
|
</code>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6 ">
|
||||||
<h3>Encrypt your files before the transfer</h3>
|
<h3>Encrypt your files before the transfer</h3>
|
||||||
<div class="terminal-top">
|
<div class="terminal-top">
|
||||||
</div>
|
</div>
|
||||||
|
@ -229,7 +235,8 @@
|
||||||
<span class="code-title"># Scan for malware or viruses using Clamav</span>
|
<span class="code-title"># Scan for malware or viruses using Clamav</span>
|
||||||
<br>$ wget http://www.eicar.org/download/eicar.com
|
<br>$ wget http://www.eicar.org/download/eicar.com
|
||||||
<br>$ curl -X PUT --upload-file ./eicar.com https://transfer.sh/eicar.com/scan
|
<br>$ curl -X PUT --upload-file ./eicar.com https://transfer.sh/eicar.com/scan
|
||||||
<br><br>
|
<br>
|
||||||
|
<br>
|
||||||
<span class="code-title"># Upload malware to VirusTotal, get a permalink in return</span>
|
<span class="code-title"># Upload malware to VirusTotal, get a permalink in return</span>
|
||||||
<br>$ curl -X PUT --upload-file nhgbhhj https://transfer.sh/test.txt/virustotal
|
<br>$ curl -X PUT --upload-file nhgbhhj https://transfer.sh/test.txt/virustotal
|
||||||
<br>
|
<br>
|
||||||
|
@ -243,7 +250,7 @@
|
||||||
<div class="terminal">
|
<div class="terminal">
|
||||||
<code>
|
<code>
|
||||||
<span class="code-title"># Backup, encrypt and transfer</span>
|
<span class="code-title"># Backup, encrypt and transfer</span>
|
||||||
<br>$ mysqldump --all-databases|gzip|gpg -ac -o-|curl -X PUT --upload-file "-" https://transfer.sh/test.txt </code>
|
<br/>$ mysqldump --all-databases|gzip|gpg -ac -o-|curl -X PUT --upload-file "-" https://transfer.sh/test.txt</code>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -255,7 +262,7 @@
|
||||||
<div class="terminal">
|
<div class="terminal">
|
||||||
<code>
|
<code>
|
||||||
<span class="code-title"># Transfer and send email with link (uses alias)</span>
|
<span class="code-title"># Transfer and send email with link (uses alias)</span>
|
||||||
<br>$ transfer /tmp/hello.txt | mail -s "Hello World" user@yourmaildomain.com
|
<br/>$ transfer /tmp/hello.txt | mail -s "Hello World" user@yourmaildomain.com
|
||||||
</code>
|
</code>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -274,12 +281,25 @@
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section id="share">
|
||||||
|
<div class="wrapper">
|
||||||
|
<h2 class="page-title">Follow on GitHub</h2>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<iframe src="//ghbtns.com/github-btn.html?user=dutchcoders&repo=transfer.sh&type=follow&count=true&size=large" allowtransparency="true" frameborder="0" scrolling="0" width="250" height="50"></iframe>
|
||||||
|
<iframe src="//ghbtns.com/github-btn.html?user=dutchcoders&repo=transfer.sh&type=watch&count=true&size=large" allowtransparency="true" frameborder="0" scrolling="0" width="200" height="50"></iframe>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section id="reviews">
|
<section id="reviews">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-8 col-md-offset-2 col-xs-12">
|
<div class="col-md-8 col-md-offset-2 col-xs-12">
|
||||||
<blockquote class="twitter-tweet tweet-xl" lang="en">
|
<blockquote class="twitter-tweet tweet-xl" lang="en">
|
||||||
|
<a href="https://twitter.com/FloifyDave/status/517383101425516544">
|
||||||
<img class="twitter-profile" src="images/reviews/dave.jpg" alt="">
|
<img class="twitter-profile" src="images/reviews/dave.jpg" alt="">
|
||||||
|
</a>
|
||||||
<p><a href="https://twitter.com/dutchcoders">@dutchcoders</a> Thanks for transfer.sh. Just used it for a production purpose for a customer. So great, so easy, so https. :)</p>
|
<p><a href="https://twitter.com/dutchcoders">@dutchcoders</a> Thanks for transfer.sh. Just used it for a production purpose for a customer. So great, so easy, so https. :)</p>
|
||||||
<a href="https://twitter.com/FloifyDave/status/517383101425516544">
|
<a href="https://twitter.com/FloifyDave/status/517383101425516544">
|
||||||
— Dave Sims (@FloifyDave)</a>
|
— Dave Sims (@FloifyDave)</a>
|
||||||
|
@ -289,13 +309,17 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6 col-xs-12">
|
<div class="col-md-6 col-xs-12">
|
||||||
<blockquote class="twitter-tweet" lang="en">
|
<blockquote class="twitter-tweet" lang="en">
|
||||||
|
<a href="https://twitter.com/kareemk/status/517029789191118849">
|
||||||
<img class="twitter-profile" src="images/reviews/kareem.jpg" alt="">
|
<img class="twitter-profile" src="images/reviews/kareem.jpg" alt="">
|
||||||
|
</a>
|
||||||
<p><a href="https://twitter.com/dutchcoders">@dutchcoders</a> love transfer.sh! any change we can *pay* for a self-hosted version?</p><a href="https://twitter.com/kareemk/status/517029789191118849">— Kareem Kouddous (@kareemk) </a>
|
<p><a href="https://twitter.com/dutchcoders">@dutchcoders</a> love transfer.sh! any change we can *pay* for a self-hosted version?</p><a href="https://twitter.com/kareemk/status/517029789191118849">— Kareem Kouddous (@kareemk) </a>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 col-xs-12">
|
<div class="col-md-6 col-xs-12">
|
||||||
<blockquote class="twitter-tweet" lang="en">
|
<blockquote class="twitter-tweet" lang="en">
|
||||||
|
<a href="https://twitter.com/drakpz/status/517008058841829376">
|
||||||
<img class="twitter-profile" src="images/reviews/pg.jpeg" alt="">
|
<img class="twitter-profile" src="images/reviews/pg.jpeg" alt="">
|
||||||
|
</a>
|
||||||
<p><a href="http://t.co/JomAmqWYEB">http://t.co/JomAmqWYEB</a> by <a href="https://twitter.com/dutchcoders">@dutchcoders</a> is pure awesomeness! any chance of source on github? :-)</p><a href="https://twitter.com/drakpz/status/517008058841829376">— PJ Spagnolatti (@drakpz)</a>
|
<p><a href="http://t.co/JomAmqWYEB">http://t.co/JomAmqWYEB</a> by <a href="https://twitter.com/dutchcoders">@dutchcoders</a> is pure awesomeness! any chance of source on github? :-)</p><a href="https://twitter.com/drakpz/status/517008058841829376">— PJ Spagnolatti (@drakpz)</a>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</div>
|
</div>
|
||||||
|
@ -303,14 +327,18 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6 col-xs-12">
|
<div class="col-md-6 col-xs-12">
|
||||||
<blockquote class="twitter-tweet" lang="en">
|
<blockquote class="twitter-tweet" lang="en">
|
||||||
|
<a href="https://twitter.com/jacoblindgren11/status/516975006501203968">
|
||||||
<img class="twitter-profile" src="images/reviews/jacob.jpg" alt="">
|
<img class="twitter-profile" src="images/reviews/jacob.jpg" alt="">
|
||||||
|
</a>
|
||||||
<p>Love transfer.sh! Will be using it from now on! Thanks for the amazing service we can use from the CLI <a href="https://twitter.com/dutchcoders">@dutchcoders</a>
|
<p>Love transfer.sh! Will be using it from now on! Thanks for the amazing service we can use from the CLI <a href="https://twitter.com/dutchcoders">@dutchcoders</a>
|
||||||
</p><a href="https://twitter.com/jacoblindgren11/status/516975006501203968">— Jacob Lindgren (@jacoblindgren11) </a>
|
</p><a href="https://twitter.com/jacoblindgren11/status/516975006501203968">— Jacob Lindgren (@jacoblindgren11) </a>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 col-xs-12">
|
<div class="col-md-6 col-xs-12">
|
||||||
<blockquote class="twitter-tweet" lang="en">
|
<blockquote class="twitter-tweet" lang="en">
|
||||||
|
<a href="https://twitter.com/arvestad/status/519507976491499521">
|
||||||
<img class="twitter-profile" src="images/reviews/lars.jpg" alt="">
|
<img class="twitter-profile" src="images/reviews/lars.jpg" alt="">
|
||||||
|
</a>
|
||||||
<p>transfer.sh is my latest fav service! Try simple command-line and web file sharing! <a href="https://t.co/FSrsb1JKJd">https://t.co/FSrsb1JKJd</a> Thanks <a href="https://twitter.com/dutchcoders">@dutchcoders</a> !</p> <a href="https://twitter.com/arvestad/status/519507976491499521">— Lars Arvestad (@arvestad)</a>
|
<p>transfer.sh is my latest fav service! Try simple command-line and web file sharing! <a href="https://t.co/FSrsb1JKJd">https://t.co/FSrsb1JKJd</a> Thanks <a href="https://twitter.com/dutchcoders">@dutchcoders</a> !</p> <a href="https://twitter.com/arvestad/status/519507976491499521">— Lars Arvestad (@arvestad)</a>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</div>
|
</div>
|
||||||
|
@ -320,48 +348,65 @@
|
||||||
|
|
||||||
<section id="share">
|
<section id="share">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<h2>Share the love</h2>
|
<h2 class="page-title">Share the love</h2>
|
||||||
<ul class="share-buttons">
|
<ul class="share-buttons">
|
||||||
<li>
|
<li>
|
||||||
<a href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Ftransfer.sh&t=" target="_blank" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(document.URL) + '&t=' + encodeURIComponent(document.URL)); return false"> <i class="icon-facebook"></i>
|
<a href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Ftransfer.sh&t=" target="_blank" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(document.URL) + '&t=' + encodeURIComponent(document.URL)); return false;"> <i class="icon-facebook"></i>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="https://twitter.com/intent/tweet?source=http%3A%2F%2Ftransfer.sh&text=:%20http%3A%2F%2Ftransfer.sh" target="_blank" title="Tweet" onclick="window.open('https://twitter.com/intent/tweet?text=' + encodeURIComponent(document.title) + ':%20' + encodeURIComponent(document.URL)); return false"> <i class="icon-twitter"></i>
|
<a href="https://twitter.com/intent/tweet?source=http%3A%2F%2Ftransfer.sh&text=:%20http%3A%2F%2Ftransfer.sh" target="_blank" title="Tweet" onclick="window.open('https://twitter.com/intent/tweet?text=' + encodeURIComponent(document.title) + ':%20' + encodeURIComponent(document.URL)); return false;"> <i class="icon-twitter"></i>
|
||||||
</a></li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="https://plus.google.com/share?url=http%3A%2F%2Ftransfer.sh" target="_blank" title="Share on Google+" onclick="window.open('https://plus.google.com/share?url=' + encodeURIComponent(document.URL)); return false"> <i class="icon-gplus"></i>
|
<a href="https://plus.google.com/share?url=http%3A%2F%2Ftransfer.sh" target="_blank" title="Share on Google+" onclick="window.open('https://plus.google.com/share?url=' + encodeURIComponent(document.URL)); return false;"> <i class="icon-gplus"></i>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="http://www.linkedin.com/shareArticle?mini=true&url=http%3A%2F%2Ftransfer.sh&title=&summary=&source=http%3A%2F%2Ftransfer.sh" target="_blank" title="Share on LinkedIn" onclick="window.open('http://www.linkedin.com/shareArticle?mini=true&url=' + encodeURIComponent(document.URL) + '&title=' + encodeURIComponent(document.title)); return false"> <i class="icon-linkedin"></i>
|
<a href="http://www.linkedin.com/shareArticle?mini=true&url=http%3A%2F%2Ftransfer.sh&title=&summary=&source=http%3A%2F%2Ftransfer.sh" target="_blank" title="Share on LinkedIn" onclick="window.open('http://www.linkedin.com/shareArticle?mini=true&url=' + encodeURIComponent(document.URL) + '&title=' + encodeURIComponent(document.title)); return false;"> <i class="icon-linkedin"></i>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<section id="contact">
|
<section id="contact">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<i class="icon-mail"></i>
|
<i class="icon-mail"></i>
|
||||||
<h2>
|
<h2 class="page-title">
|
||||||
Any questions?
|
Any questions?
|
||||||
</h2>
|
</h2>
|
||||||
<a href="#" data-uv-trigger class="btn-cta">contact us</a>
|
<a href="#" data-uv-trigger class="btn-cta">contact us</a>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section id="tor">
|
||||||
|
<div class="wrapper">
|
||||||
|
<a href="https://torproject.com"><img src="images/tor.svg" alt=""></a><br/>
|
||||||
|
<a href="https://jxm5d6emw5rknovg.onion/">https://jxm5d6emw5rknovg.onion/</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<img src="images/Logo-orange.png" alt="Founded in Holland">
|
<div style="">
|
||||||
<p>Made with <i class="icon-heart"></i> by <a href="http://dutchcoders.io/" title="Dutch Coders">Dutch Coders</a>
|
<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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<a href="https://github.com/dutchcoders/transfer.sh/">
|
|
||||||
<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 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>
|
||||||
</a>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
(function() {
|
(function() {
|
||||||
|
@ -378,24 +423,17 @@
|
||||||
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
|
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
|
||||||
<script>
|
|
||||||
(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 src="/scripts/main.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/goamz/goamz/s3"
|
"github.com/goamz/goamz/s3"
|
||||||
"io"
|
"io"
|
||||||
|
"mime"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -11,6 +12,7 @@ import (
|
||||||
|
|
||||||
type Storage interface {
|
type Storage interface {
|
||||||
Get(token string, filename string) (reader io.ReadCloser, contentType string, contentLength uint64, err error)
|
Get(token string, filename string) (reader io.ReadCloser, contentType string, contentLength uint64, err error)
|
||||||
|
Head(token string, filename string) (contentType string, contentLength uint64, err error)
|
||||||
Put(token string, filename string, reader io.Reader, contentType string, contentLength uint64) error
|
Put(token string, filename string, reader io.Reader, contentType string, contentLength uint64) error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +25,21 @@ func NewLocalStorage(basedir string) (*LocalStorage, error) {
|
||||||
return &LocalStorage{basedir: basedir}, nil
|
return &LocalStorage{basedir: basedir}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *LocalStorage) Head(token string, filename string) (contentType string, contentLength uint64, err error) {
|
||||||
|
path := filepath.Join(s.basedir, token, filename)
|
||||||
|
|
||||||
|
var fi os.FileInfo
|
||||||
|
if fi, err = os.Lstat(path); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
contentLength = uint64(fi.Size())
|
||||||
|
|
||||||
|
contentType = mime.TypeByExtension(filepath.Ext(filename))
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (s *LocalStorage) Get(token string, filename string) (reader io.ReadCloser, contentType string, contentLength uint64, err error) {
|
func (s *LocalStorage) Get(token string, filename string) (reader io.ReadCloser, contentType string, contentLength uint64, err error) {
|
||||||
path := filepath.Join(s.basedir, token, filename)
|
path := filepath.Join(s.basedir, token, filename)
|
||||||
|
|
||||||
|
@ -33,11 +50,12 @@ func (s *LocalStorage) Get(token string, filename string) (reader io.ReadCloser,
|
||||||
|
|
||||||
var fi os.FileInfo
|
var fi os.FileInfo
|
||||||
if fi, err = os.Lstat(path); err != nil {
|
if fi, err = os.Lstat(path); err != nil {
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
contentLength = uint64(fi.Size())
|
contentLength = uint64(fi.Size())
|
||||||
|
|
||||||
contentType = ""
|
contentType = mime.TypeByExtension(filepath.Ext(filename))
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -80,13 +98,39 @@ func NewS3Storage() (*S3Storage, error) {
|
||||||
return &S3Storage{bucket: bucket}, nil
|
return &S3Storage{bucket: bucket}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *S3Storage) Head(token string, filename string) (contentType string, contentLength uint64, err error) {
|
||||||
|
key := fmt.Sprintf("%s/%s", token, filename)
|
||||||
|
|
||||||
|
// content type , content length
|
||||||
|
response, err := s.bucket.Head(key, map[string][]string{})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
contentType = response.Header.Get("Content-Type")
|
||||||
|
|
||||||
|
contentLength, err = strconv.ParseUint(response.Header.Get("Content-Length"), 10, 0)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (s *S3Storage) Get(token string, filename string) (reader io.ReadCloser, contentType string, contentLength uint64, err error) {
|
func (s *S3Storage) Get(token string, filename string) (reader io.ReadCloser, contentType string, contentLength uint64, err error) {
|
||||||
key := fmt.Sprintf("%s/%s", token, filename)
|
key := fmt.Sprintf("%s/%s", token, filename)
|
||||||
|
|
||||||
// content type , content length
|
// content type , content length
|
||||||
response, err := s.bucket.GetResponse(key)
|
response, err := s.bucket.GetResponse(key)
|
||||||
contentType = ""
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
contentType = response.Header.Get("Content-Type")
|
||||||
contentLength, err = strconv.ParseUint(response.Header.Get("Content-Length"), 10, 0)
|
contentLength, err = strconv.ParseUint(response.Header.Get("Content-Length"), 10, 0)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
reader = response.Body
|
reader = response.Body
|
||||||
return
|
return
|
||||||
|
|
|
@ -27,8 +27,11 @@ package main
|
||||||
import (
|
import (
|
||||||
"github.com/goamz/goamz/aws"
|
"github.com/goamz/goamz/aws"
|
||||||
"github.com/goamz/goamz/s3"
|
"github.com/goamz/goamz/s3"
|
||||||
|
"github.com/golang/gddo/httputil/header"
|
||||||
|
"math"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/mail"
|
"net/mail"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -44,6 +47,163 @@ func getBucket() (*s3.Bucket, error) {
|
||||||
return b, nil
|
return b, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func formatNumber(format string, s uint64) string {
|
||||||
|
|
||||||
|
return RenderFloat(format, float64(s))
|
||||||
|
}
|
||||||
|
|
||||||
|
var renderFloatPrecisionMultipliers = [10]float64{
|
||||||
|
1,
|
||||||
|
10,
|
||||||
|
100,
|
||||||
|
1000,
|
||||||
|
10000,
|
||||||
|
100000,
|
||||||
|
1000000,
|
||||||
|
10000000,
|
||||||
|
100000000,
|
||||||
|
1000000000,
|
||||||
|
}
|
||||||
|
|
||||||
|
var renderFloatPrecisionRounders = [10]float64{
|
||||||
|
0.5,
|
||||||
|
0.05,
|
||||||
|
0.005,
|
||||||
|
0.0005,
|
||||||
|
0.00005,
|
||||||
|
0.000005,
|
||||||
|
0.0000005,
|
||||||
|
0.00000005,
|
||||||
|
0.000000005,
|
||||||
|
0.0000000005,
|
||||||
|
}
|
||||||
|
|
||||||
|
func RenderFloat(format string, n float64) string {
|
||||||
|
// Special cases:
|
||||||
|
// NaN = "NaN"
|
||||||
|
// +Inf = "+Infinity"
|
||||||
|
// -Inf = "-Infinity"
|
||||||
|
if math.IsNaN(n) {
|
||||||
|
return "NaN"
|
||||||
|
}
|
||||||
|
if n > math.MaxFloat64 {
|
||||||
|
return "Infinity"
|
||||||
|
}
|
||||||
|
if n < -math.MaxFloat64 {
|
||||||
|
return "-Infinity"
|
||||||
|
}
|
||||||
|
|
||||||
|
// default format
|
||||||
|
precision := 2
|
||||||
|
decimalStr := "."
|
||||||
|
thousandStr := ","
|
||||||
|
positiveStr := ""
|
||||||
|
negativeStr := "-"
|
||||||
|
|
||||||
|
if len(format) > 0 {
|
||||||
|
// If there is an explicit format directive,
|
||||||
|
// then default values are these:
|
||||||
|
precision = 9
|
||||||
|
thousandStr = ""
|
||||||
|
|
||||||
|
// collect indices of meaningful formatting directives
|
||||||
|
formatDirectiveChars := []rune(format)
|
||||||
|
formatDirectiveIndices := make([]int, 0)
|
||||||
|
for i, char := range formatDirectiveChars {
|
||||||
|
if char != '#' && char != '0' {
|
||||||
|
formatDirectiveIndices = append(formatDirectiveIndices, i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(formatDirectiveIndices) > 0 {
|
||||||
|
// Directive at index 0:
|
||||||
|
// Must be a '+'
|
||||||
|
// Raise an error if not the case
|
||||||
|
// index: 0123456789
|
||||||
|
// +0.000,000
|
||||||
|
// +000,000.0
|
||||||
|
// +0000.00
|
||||||
|
// +0000
|
||||||
|
if formatDirectiveIndices[0] == 0 {
|
||||||
|
if formatDirectiveChars[formatDirectiveIndices[0]] != '+' {
|
||||||
|
panic("RenderFloat(): invalid positive sign directive")
|
||||||
|
}
|
||||||
|
positiveStr = "+"
|
||||||
|
formatDirectiveIndices = formatDirectiveIndices[1:]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Two directives:
|
||||||
|
// First is thousands separator
|
||||||
|
// Raise an error if not followed by 3-digit
|
||||||
|
// 0123456789
|
||||||
|
// 0.000,000
|
||||||
|
// 000,000.00
|
||||||
|
if len(formatDirectiveIndices) == 2 {
|
||||||
|
if (formatDirectiveIndices[1] - formatDirectiveIndices[0]) != 4 {
|
||||||
|
panic("RenderFloat(): thousands separator directive must be followed by 3 digit-specifiers")
|
||||||
|
}
|
||||||
|
thousandStr = string(formatDirectiveChars[formatDirectiveIndices[0]])
|
||||||
|
formatDirectiveIndices = formatDirectiveIndices[1:]
|
||||||
|
}
|
||||||
|
|
||||||
|
// One directive:
|
||||||
|
// Directive is decimal separator
|
||||||
|
// The number of digit-specifier following the separator indicates wanted precision
|
||||||
|
// 0123456789
|
||||||
|
// 0.00
|
||||||
|
// 000,0000
|
||||||
|
if len(formatDirectiveIndices) == 1 {
|
||||||
|
decimalStr = string(formatDirectiveChars[formatDirectiveIndices[0]])
|
||||||
|
precision = len(formatDirectiveChars) - formatDirectiveIndices[0] - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate sign part
|
||||||
|
var signStr string
|
||||||
|
if n >= 0.000000001 {
|
||||||
|
signStr = positiveStr
|
||||||
|
} else if n <= -0.000000001 {
|
||||||
|
signStr = negativeStr
|
||||||
|
n = -n
|
||||||
|
} else {
|
||||||
|
signStr = ""
|
||||||
|
n = 0.0
|
||||||
|
}
|
||||||
|
|
||||||
|
// split number into integer and fractional parts
|
||||||
|
intf, fracf := math.Modf(n + renderFloatPrecisionRounders[precision])
|
||||||
|
|
||||||
|
// generate integer part string
|
||||||
|
intStr := strconv.Itoa(int(intf))
|
||||||
|
|
||||||
|
// add thousand separator if required
|
||||||
|
if len(thousandStr) > 0 {
|
||||||
|
for i := len(intStr); i > 3; {
|
||||||
|
i -= 3
|
||||||
|
intStr = intStr[:i] + thousandStr + intStr[i:]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// no fractional part, we can leave now
|
||||||
|
if precision == 0 {
|
||||||
|
return signStr + intStr
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate fractional part
|
||||||
|
fracStr := strconv.Itoa(int(fracf * renderFloatPrecisionMultipliers[precision]))
|
||||||
|
// may need padding
|
||||||
|
if len(fracStr) < precision {
|
||||||
|
fracStr = "000000000000000"[:precision-len(fracStr)] + fracStr
|
||||||
|
}
|
||||||
|
|
||||||
|
return signStr + intStr + decimalStr + fracStr
|
||||||
|
}
|
||||||
|
|
||||||
|
func RenderInteger(format string, n int) string {
|
||||||
|
return RenderFloat(format, float64(n))
|
||||||
|
}
|
||||||
|
|
||||||
// Request.RemoteAddress contains port, which we want to remove i.e.:
|
// Request.RemoteAddress contains port, which we want to remove i.e.:
|
||||||
// "[::1]:58292" => "[::1]"
|
// "[::1]:58292" => "[::1]"
|
||||||
func ipAddrFromRemoteAddr(s string) string {
|
func ipAddrFromRemoteAddr(s string) string {
|
||||||
|
@ -78,3 +238,15 @@ func encodeRFC2047(String string) string {
|
||||||
addr := mail.Address{String, ""}
|
addr := mail.Address{String, ""}
|
||||||
return strings.Trim(addr.String(), " <>")
|
return strings.Trim(addr.String(), " <>")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func acceptsHtml(hdr http.Header) bool {
|
||||||
|
actual := header.ParseAccept(hdr, "Accept")
|
||||||
|
|
||||||
|
for _, s := range actual {
|
||||||
|
if s.Value == "text/html" {
|
||||||
|
return (true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (false)
|
||||||
|
}
|
||||||
|
|
47
transfersh-web/download.audio.html
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
After Width: | Height: | Size: 8.6 KiB |
|
@ -45,14 +45,14 @@
|
||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
||||||
<g
|
<g
|
||||||
transform="translate(-93.957497,-365.26607)"
|
transform="matrix(1,0,0,0.94456233,-93.957497,-345.57658)"
|
||||||
id="layer1">
|
id="layer1">
|
||||||
<path
|
<path
|
||||||
d="m 85.371201,355.16455 789.901059,0 0,49.98291 -789.901059,0 z"
|
d="m 93.957497,365.85895 750.000003,0 0,31.76074 -750.000003,0 z"
|
||||||
id="rect4487"
|
id="rect4487"
|
||||||
style="fill:#85b5bb;fill-opacity:1;stroke:none" />
|
style="fill:#85b5bb;fill-opacity:1;stroke:none" />
|
||||||
<g
|
<g
|
||||||
transform="matrix(1.4512649,0,0,-1.4512649,-114.5591,1453.446)"
|
transform="matrix(1.4512649,0,0,-1.4512649,-114.5591,1454.9192)"
|
||||||
id="g24"
|
id="g24"
|
||||||
style="fill:#ff7050">
|
style="fill:#ff7050">
|
||||||
<g
|
<g
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
transform="matrix(1.4512649,0,0,-1.4512649,-114.5591,1453.507)"
|
transform="matrix(1.4512649,0,0,-1.4512649,-114.5591,1454.9802)"
|
||||||
id="g40"
|
id="g40"
|
||||||
style="fill:#ffed5d">
|
style="fill:#ffed5d">
|
||||||
<g
|
<g
|
||||||
|
@ -104,7 +104,7 @@
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
transform="matrix(1.4512649,0,0,-1.4512649,-115.0147,1453.4765)"
|
transform="matrix(1.4512649,0,0,-1.4512649,-115.0147,1454.9497)"
|
||||||
id="g56"
|
id="g56"
|
||||||
style="fill:#93de7f">
|
style="fill:#93de7f">
|
||||||
<g
|
<g
|
||||||
|
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
6
transfersh-web/images/tor.svg
Normal file
After Width: | Height: | Size: 22 KiB |
5
transfersh-web/includes/download-bottom.html
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br/>
|
||||||
|
</section>
|
10
transfersh-web/includes/download-btn.html
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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
Normal file
|
@ -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>
|
|
@ -6,22 +6,8 @@
|
||||||
<html class="no-js">
|
<html class="no-js">
|
||||||
<!--<![endif]-->
|
<!--<![endif]-->
|
||||||
|
|
||||||
<head>
|
include "includes/head.html"
|
||||||
<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='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>
|
<body>
|
||||||
|
|
||||||
|
@ -41,24 +27,14 @@
|
||||||
ga('send', 'pageview');
|
ga('send', 'pageview');
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div id="navigation">
|
include "includes/navigation.html"
|
||||||
<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">
|
<section id="home">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<h2>
|
<h2 class="page-title">
|
||||||
Easy file sharing from the command line</h2>
|
Easy file sharing from the command line</h2>
|
||||||
<div class="row animated fadeInDown">
|
<div class="row animated fadeInDown">
|
||||||
<div id="from-terminal" class=" box col-md-8 col-md-offset-2 col-xs-12">
|
<div id="from-terminal" class="box col-md-8 col-md-offset-2 col-xs-12">
|
||||||
<div class="terminal-top">
|
<div class="terminal-top">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -77,7 +53,8 @@
|
||||||
<code>
|
<code>
|
||||||
<br>
|
<br>
|
||||||
<span class="code-title"># Upload from web</span>
|
<span class="code-title"># Upload from web</span>
|
||||||
<br>Drag your files here, or <a class="browse" href="#"> click to browse.</a>
|
<br>Drag your files here, or <a class="browse" href="#"> click to browse. <br/></a>
|
||||||
|
|
||||||
</code>
|
</code>
|
||||||
<input type="file" multiple="multiple" style='display: none;' />
|
<input type="file" multiple="multiple" style='display: none;' />
|
||||||
<ul class='queue'>
|
<ul class='queue'>
|
||||||
|
@ -141,7 +118,7 @@
|
||||||
|
|
||||||
<section id="samples">
|
<section id="samples">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<h2>
|
<h2 class="page-title">
|
||||||
Sample use cases
|
Sample use cases
|
||||||
</h2>
|
</h2>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -170,7 +147,8 @@
|
||||||
<span class="code-title"># Add this to .bashrc or its equivalent</span>
|
<span class="code-title"># Add this to .bashrc or its equivalent</span>
|
||||||
<br/>transfer() {
|
<br/>transfer() {
|
||||||
<br># write to output to tmpfile because of progress bar
|
<br># write to output to tmpfile because of progress bar
|
||||||
<br>tmpfile=$( mktemp -t transferXXX ); curl --progress-bar --upload-file $1 https://transfer.sh/$(basename $1) >> $tmpfile; cat $tmpfile; rm -f $tmpfile; }
|
<br>tmpfile=$( mktemp -t transferXXX ); basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9]/-/g'); curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile; cat $tmpfile; rm -f $tmpfile;
|
||||||
|
<br/>}
|
||||||
<br/>
|
<br/>
|
||||||
<br/>alias transfer=transfer
|
<br/>alias transfer=transfer
|
||||||
<br/>
|
<br/>
|
||||||
|
@ -231,7 +209,8 @@
|
||||||
<span class="code-title"># Scan for malware or viruses using Clamav</span>
|
<span class="code-title"># Scan for malware or viruses using Clamav</span>
|
||||||
<br>$ wget http://www.eicar.org/download/eicar.com
|
<br>$ wget http://www.eicar.org/download/eicar.com
|
||||||
<br>$ curl -X PUT --upload-file ./eicar.com https://transfer.sh/eicar.com/scan
|
<br>$ curl -X PUT --upload-file ./eicar.com https://transfer.sh/eicar.com/scan
|
||||||
<br><br>
|
<br>
|
||||||
|
<br>
|
||||||
<span class="code-title"># Upload malware to VirusTotal, get a permalink in return</span>
|
<span class="code-title"># Upload malware to VirusTotal, get a permalink in return</span>
|
||||||
<br>$ curl -X PUT --upload-file nhgbhhj https://transfer.sh/test.txt/virustotal
|
<br>$ curl -X PUT --upload-file nhgbhhj https://transfer.sh/test.txt/virustotal
|
||||||
<br>
|
<br>
|
||||||
|
@ -245,7 +224,7 @@
|
||||||
<div class="terminal">
|
<div class="terminal">
|
||||||
<code>
|
<code>
|
||||||
<span class="code-title"># Backup, encrypt and transfer</span>
|
<span class="code-title"># Backup, encrypt and transfer</span>
|
||||||
<br/>$ mysqldump --all-databases|gzip|gpg -ac -o-|curl -X PUT --upload-file "-" https://transfer.sh/test.txt </code>
|
<br/>$ mysqldump --all-databases|gzip|gpg -ac -o-|curl -X PUT --upload-file "-" https://transfer.sh/test.txt</code>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -276,12 +255,25 @@
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section id="share">
|
||||||
|
<div class="wrapper">
|
||||||
|
<h2 class="page-title">Follow on GitHub</h2>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<iframe src="//ghbtns.com/github-btn.html?user=dutchcoders&repo=transfer.sh&type=follow&count=true&size=large" allowtransparency="true" frameborder="0" scrolling="0" width="250" height="50"></iframe>
|
||||||
|
<iframe src="//ghbtns.com/github-btn.html?user=dutchcoders&repo=transfer.sh&type=watch&count=true&size=large" allowtransparency="true" frameborder="0" scrolling="0" width="200" height="50"></iframe>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section id="reviews">
|
<section id="reviews">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-8 col-md-offset-2 col-xs-12">
|
<div class="col-md-8 col-md-offset-2 col-xs-12">
|
||||||
<blockquote class="twitter-tweet tweet-xl" lang="en">
|
<blockquote class="twitter-tweet tweet-xl" lang="en">
|
||||||
|
<a href="https://twitter.com/FloifyDave/status/517383101425516544">
|
||||||
<img class="twitter-profile" src="images/reviews/dave.jpg" alt="">
|
<img class="twitter-profile" src="images/reviews/dave.jpg" alt="">
|
||||||
|
</a>
|
||||||
<p><a href="https://twitter.com/dutchcoders">@dutchcoders</a> Thanks for transfer.sh. Just used it for a production purpose for a customer. So great, so easy, so https. :)</p>
|
<p><a href="https://twitter.com/dutchcoders">@dutchcoders</a> Thanks for transfer.sh. Just used it for a production purpose for a customer. So great, so easy, so https. :)</p>
|
||||||
<a href="https://twitter.com/FloifyDave/status/517383101425516544">
|
<a href="https://twitter.com/FloifyDave/status/517383101425516544">
|
||||||
— Dave Sims (@FloifyDave)</a>
|
— Dave Sims (@FloifyDave)</a>
|
||||||
|
@ -291,13 +283,17 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6 col-xs-12">
|
<div class="col-md-6 col-xs-12">
|
||||||
<blockquote class="twitter-tweet" lang="en">
|
<blockquote class="twitter-tweet" lang="en">
|
||||||
|
<a href="https://twitter.com/kareemk/status/517029789191118849">
|
||||||
<img class="twitter-profile" src="images/reviews/kareem.jpg" alt="">
|
<img class="twitter-profile" src="images/reviews/kareem.jpg" alt="">
|
||||||
|
</a>
|
||||||
<p><a href="https://twitter.com/dutchcoders">@dutchcoders</a> love transfer.sh! any change we can *pay* for a self-hosted version?</p><a href="https://twitter.com/kareemk/status/517029789191118849">— Kareem Kouddous (@kareemk) </a>
|
<p><a href="https://twitter.com/dutchcoders">@dutchcoders</a> love transfer.sh! any change we can *pay* for a self-hosted version?</p><a href="https://twitter.com/kareemk/status/517029789191118849">— Kareem Kouddous (@kareemk) </a>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 col-xs-12">
|
<div class="col-md-6 col-xs-12">
|
||||||
<blockquote class="twitter-tweet" lang="en">
|
<blockquote class="twitter-tweet" lang="en">
|
||||||
|
<a href="https://twitter.com/drakpz/status/517008058841829376">
|
||||||
<img class="twitter-profile" src="images/reviews/pg.jpeg" alt="">
|
<img class="twitter-profile" src="images/reviews/pg.jpeg" alt="">
|
||||||
|
</a>
|
||||||
<p><a href="http://t.co/JomAmqWYEB">http://t.co/JomAmqWYEB</a> by <a href="https://twitter.com/dutchcoders">@dutchcoders</a> is pure awesomeness! any chance of source on github? :-)</p><a href="https://twitter.com/drakpz/status/517008058841829376">— PJ Spagnolatti (@drakpz)</a>
|
<p><a href="http://t.co/JomAmqWYEB">http://t.co/JomAmqWYEB</a> by <a href="https://twitter.com/dutchcoders">@dutchcoders</a> is pure awesomeness! any chance of source on github? :-)</p><a href="https://twitter.com/drakpz/status/517008058841829376">— PJ Spagnolatti (@drakpz)</a>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</div>
|
</div>
|
||||||
|
@ -305,14 +301,18 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6 col-xs-12">
|
<div class="col-md-6 col-xs-12">
|
||||||
<blockquote class="twitter-tweet" lang="en">
|
<blockquote class="twitter-tweet" lang="en">
|
||||||
|
<a href="https://twitter.com/jacoblindgren11/status/516975006501203968">
|
||||||
<img class="twitter-profile" src="images/reviews/jacob.jpg" alt="">
|
<img class="twitter-profile" src="images/reviews/jacob.jpg" alt="">
|
||||||
|
</a>
|
||||||
<p>Love transfer.sh! Will be using it from now on! Thanks for the amazing service we can use from the CLI <a href="https://twitter.com/dutchcoders">@dutchcoders</a>
|
<p>Love transfer.sh! Will be using it from now on! Thanks for the amazing service we can use from the CLI <a href="https://twitter.com/dutchcoders">@dutchcoders</a>
|
||||||
</p><a href="https://twitter.com/jacoblindgren11/status/516975006501203968">— Jacob Lindgren (@jacoblindgren11) </a>
|
</p><a href="https://twitter.com/jacoblindgren11/status/516975006501203968">— Jacob Lindgren (@jacoblindgren11) </a>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 col-xs-12">
|
<div class="col-md-6 col-xs-12">
|
||||||
<blockquote class="twitter-tweet" lang="en">
|
<blockquote class="twitter-tweet" lang="en">
|
||||||
|
<a href="https://twitter.com/arvestad/status/519507976491499521">
|
||||||
<img class="twitter-profile" src="images/reviews/lars.jpg" alt="">
|
<img class="twitter-profile" src="images/reviews/lars.jpg" alt="">
|
||||||
|
</a>
|
||||||
<p>transfer.sh is my latest fav service! Try simple command-line and web file sharing! <a href="https://t.co/FSrsb1JKJd">https://t.co/FSrsb1JKJd</a> Thanks <a href="https://twitter.com/dutchcoders">@dutchcoders</a> !</p> <a href="https://twitter.com/arvestad/status/519507976491499521">— Lars Arvestad (@arvestad)</a>
|
<p>transfer.sh is my latest fav service! Try simple command-line and web file sharing! <a href="https://t.co/FSrsb1JKJd">https://t.co/FSrsb1JKJd</a> Thanks <a href="https://twitter.com/dutchcoders">@dutchcoders</a> !</p> <a href="https://twitter.com/arvestad/status/519507976491499521">— Lars Arvestad (@arvestad)</a>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</div>
|
</div>
|
||||||
|
@ -322,7 +322,7 @@
|
||||||
|
|
||||||
<section id="share">
|
<section id="share">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<h2>Share the love</h2>
|
<h2 class="page-title">Share the love</h2>
|
||||||
<ul class="share-buttons">
|
<ul class="share-buttons">
|
||||||
<li>
|
<li>
|
||||||
<a href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Ftransfer.sh&t=" target="_blank" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(document.URL) + '&t=' + encodeURIComponent(document.URL)); return false;"> <i class="icon-facebook"></i>
|
<a href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Ftransfer.sh&t=" target="_blank" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(document.URL) + '&t=' + encodeURIComponent(document.URL)); return false;"> <i class="icon-facebook"></i>
|
||||||
|
@ -343,71 +343,33 @@
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<section id="contact">
|
<section id="contact">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<i class="icon-mail"></i>
|
<i class="icon-mail"></i>
|
||||||
<h2>
|
<h2 class="page-title">
|
||||||
Any questions?
|
Any questions?
|
||||||
</h2>
|
</h2>
|
||||||
<a href="#" data-uv-trigger class="btn-cta">contact us</a>
|
<a href="#" data-uv-trigger class="btn-cta">contact us</a>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<footer>
|
|
||||||
|
<section id="tor">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<img src="images/Logo-orange.png" alt="Founded in Holland">
|
<a href="https://torproject.com"><img src="images/tor.svg" alt=""></a><br/>
|
||||||
<p>Made with <i class="icon-heart"></i> by <a href="http://dutchcoders.io/" title="Dutch Coders">Dutch Coders</a>
|
<a href="https://jxm5d6emw5rknovg.onion/">https://jxm5d6emw5rknovg.onion/</a>
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</section>
|
||||||
|
|
||||||
<a href="https://github.com/dutchcoders/transfer.sh/">
|
|
||||||
<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>
|
include "includes/footer.html"
|
||||||
(function() {
|
|
||||||
var uv = document.createElement('script');
|
include "includes/js.html"
|
||||||
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/highlightjs/highlight.pack.js"></script>
|
|
||||||
<!-- </*script*/ src="bower_components/typed.js/js/typed.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/typewriter-bundle.js"></script>
|
|
||||||
<script src="scripts/main.js"></script>
|
|
||||||
<!-- endbuild -->
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|
61
transfersh-web/scripts/clipboard.js
Normal file
|
@ -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);
|
||||||
|
})();
|
|
@ -18,10 +18,18 @@ $(document).ready(function() {
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
var files = Array()
|
var files = Array()
|
||||||
|
var queue = Array()
|
||||||
|
|
||||||
|
$(window).bind('beforeunload', function(){
|
||||||
|
if (queue.length==0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
return 'There are still ' + queue.length + ' files being uploaded.';
|
||||||
|
});
|
||||||
|
|
||||||
function upload(file) {
|
function upload(file) {
|
||||||
|
|
||||||
$('.browse').addClass('uploading');
|
$('.browse').addClass('uploading');
|
||||||
|
|
||||||
var li = $('<li style="clear:both;"/>');
|
var li = $('<li style="clear:both;"/>');
|
||||||
|
|
||||||
li.append($('<div><div class="upload-progress"><span></span><div class="bar" style="width:0%;">####################################################</div></div><p>Uploading... ' + file.name + '</p></div>'));
|
li.append($('<div><div class="upload-progress"><span></span><div class="bar" style="width:0%;">####################################################</div></div><p>Uploading... ' + file.name + '</p></div>'));
|
||||||
|
@ -33,7 +41,8 @@ $(document).ready(function() {
|
||||||
var pc = parseInt((e.loaded / e.total * 100));
|
var pc = parseInt((e.loaded / e.total * 100));
|
||||||
$('.upload-progress', $(li)).show();
|
$('.upload-progress', $(li)).show();
|
||||||
$('.upload-progress .bar', $(li)).css('width', pc + "%");
|
$('.upload-progress .bar', $(li)).css('width', pc + "%");
|
||||||
$('.upload-progress span ').empty().append(pc + "%");
|
$('.upload-progress span ', $(li)).empty().append(pc + "%");
|
||||||
|
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
xhr.onreadystatechange = function(e) {
|
xhr.onreadystatechange = function(e) {
|
||||||
|
@ -47,8 +56,13 @@ $(document).ready(function() {
|
||||||
$(li).html('<span>Error (' + xhr.status + ') during upload of file ' + file.name + '</span>');
|
$(li).html('<span>Error (' + xhr.status + ') during upload of file ' + file.name + '</span>');
|
||||||
}
|
}
|
||||||
|
|
||||||
files.push(xhr.responseText.replace("https://transfer.sh/", "").replace("\n", ""));
|
// file uploaded successfully, remove from queue
|
||||||
// files.push(URI(xhr.responseText).absoluteTo(location.href).toString());
|
var index = queue.indexOf(xhr);
|
||||||
|
if (index > -1) {
|
||||||
|
queue.splice(index, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
files.push(URI(xhr.responseText.replace("\n", "")).path());
|
||||||
|
|
||||||
$(".download-zip").attr("href", URI("(" + files.join(",") + ").zip").absoluteTo(location.href).toString());
|
$(".download-zip").attr("href", URI("(" + files.join(",") + ").zip").absoluteTo(location.href).toString());
|
||||||
$(".download-tar").attr("href", URI("(" + files.join(",") + ").tar.gz").absoluteTo(location.href).toString());
|
$(".download-tar").attr("href", URI("(" + files.join(",") + ").tar.gz").absoluteTo(location.href).toString());
|
||||||
|
@ -56,7 +70,9 @@ $(document).ready(function() {
|
||||||
$(".all-files").addClass('show');
|
$(".all-files").addClass('show');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// should queue all uploads.
|
// should queue all uploads.
|
||||||
|
queue.push(xhr);
|
||||||
|
|
||||||
// start upload
|
// start upload
|
||||||
xhr.open("PUT", '/' + file.name, true);
|
xhr.open("PUT", '/' + file.name, true);
|
||||||
|
@ -79,7 +95,6 @@ $(document).ready(function() {
|
||||||
var files = event.originalEvent.target.files || event.originalEvent.dataTransfer.files;
|
var files = event.originalEvent.target.files || event.originalEvent.dataTransfer.files;
|
||||||
|
|
||||||
$.each(files, function(index, file) {
|
$.each(files, function(index, file) {
|
||||||
console.debug(file);
|
|
||||||
upload(file);
|
upload(file);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -93,7 +108,6 @@ $(document).ready(function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$('input[type=file]').on('change', function(event) {
|
$('input[type=file]').on('change', function(event) {
|
||||||
$.each(this.files, function(index, file) {
|
$.each(this.files, function(index, file) {
|
||||||
if (file instanceof Blob) {
|
if (file instanceof Blob) {
|
||||||
|
@ -101,4 +115,68 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// clipboard
|
||||||
|
if (window.location.href.indexOf("download") > -1 ) {
|
||||||
|
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
var copylinkbtn = document.getElementById("copy-link-btn"),
|
||||||
|
copylink = document.getElementById("copy-link-wrapper"),
|
||||||
|
overlay = document.getElementById("overlay");
|
||||||
|
|
||||||
|
var url = "http://url"
|
||||||
|
copylinkbtn.addEventListener("click", function() {
|
||||||
|
|
||||||
|
var error = document.getElementsByClassName('error');
|
||||||
|
|
||||||
|
while (error[0]) {
|
||||||
|
error[0].parentNode.removeChild(error[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
document.body.className += ' active';
|
||||||
|
|
||||||
|
copylink.children[1].value = url;
|
||||||
|
copylink.children[1].focus();
|
||||||
|
copylink.children[1].select();
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
overlay.addEventListener("click", function() {
|
||||||
|
document.body.className = '';
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
copylink.children[1].addEventListener("keydown", function(e) {
|
||||||
|
|
||||||
|
var error = document.getElementsByClassName('error');
|
||||||
|
|
||||||
|
while (error[0]) {
|
||||||
|
error[0].parentNode.removeChild(error[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
|
||||||
|
if ((e.metaKey || e.ctrlKey) && e.keyCode === 67 && isTextSelected(copylink.children[2])) {
|
||||||
|
document.body.className = '';
|
||||||
|
} else if ((e.metaKey || e.ctrlKey) && e.keyCode === 67 && isTextSelected(copylink.children[2]) === false) {
|
||||||
|
var error = document.createElement('span');
|
||||||
|
error.className = 'error';
|
||||||
|
var errortext = document.createTextNode('The link was not copied, make sure the entire text is selected.');
|
||||||
|
|
||||||
|
error.appendChild(errortext);
|
||||||
|
copylink.appendChild(error);
|
||||||
|
}
|
||||||
|
}, 100);
|
||||||
|
|
||||||
|
function isTextSelected(input) {
|
||||||
|
if (typeof input.selectionStart == "number") {
|
||||||
|
return input.selectionStart == 0 && input.selectionEnd == input.value.length;
|
||||||
|
} else if (typeof document.selection != "undefined") {
|
||||||
|
input.focus();
|
||||||
|
return document.selection.createRange().text == input.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
};
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
1296
transfersh-web/scripts/showdown.js
Normal file
6
transfersh-web/styles/bootstrap.less
vendored
|
@ -9,10 +9,10 @@
|
||||||
// Core CSS
|
// Core CSS
|
||||||
@import "../bower_components/bootstrap/less/scaffolding.less";
|
@import "../bower_components/bootstrap/less/scaffolding.less";
|
||||||
@import "../bower_components/bootstrap/less/type.less";
|
@import "../bower_components/bootstrap/less/type.less";
|
||||||
/* @import "../bower_components/bootstrap/less/code.less"; */
|
// @import "../bower_components/bootstrap/less/code.less";
|
||||||
@import "../bower_components/bootstrap/less/grid.less";
|
@import "../bower_components/bootstrap/less/grid.less";
|
||||||
//@import "../bower_components/bootstrap/less/tables.less";
|
@import "../bower_components/bootstrap/less/tables.less";
|
||||||
//@import "../bower_components/bootstrap/less/forms.less";
|
@import "../bower_components/bootstrap/less/forms.less";
|
||||||
//@import "../bower_components/bootstrap/less/buttons.less";
|
//@import "../bower_components/bootstrap/less/buttons.less";
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
|
|
||||||
|
body {
|
||||||
|
max-width: 2000px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
.browsehappy {
|
.browsehappy {
|
||||||
margin: 0.2em 0;
|
margin: 0.2em 0;
|
||||||
background: orange;
|
background: orange;
|
||||||
|
@ -10,8 +15,8 @@
|
||||||
margin-top: 30px;
|
margin-top: 30px;
|
||||||
ul {
|
ul {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
max-width: 300px;
|
max-width: 400px;
|
||||||
margin: 0 auto;
|
marghomein: 0 auto;
|
||||||
}
|
}
|
||||||
li {
|
li {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
@ -41,8 +46,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.page-title {
|
||||||
h2 {
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 35px;
|
font-size: 35px;
|
||||||
@media (min-width: @screen-sm-min) {
|
@media (min-width: @screen-sm-min) {
|
||||||
|
@ -90,8 +94,6 @@ a {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::selection {
|
::selection {
|
||||||
background: @red;
|
background: @red;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
#home {
|
#home {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
h2 {
|
.page-title {
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
}
|
}
|
||||||
@media (min-width: @screen-sm-min) {
|
@media (min-width: @screen-sm-min) {
|
||||||
padding: 50px;
|
padding: 50px;
|
||||||
h2 {
|
.page-title {
|
||||||
font-size: 45px;
|
font-size: 45px;
|
||||||
margin-top: -20px;
|
margin-top: -20px;
|
||||||
margin-bottom: 45px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.btn-home {
|
.btn-home {
|
||||||
|
@ -68,7 +68,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.terminal {
|
.terminal {
|
||||||
|
a {
|
||||||
|
color: #fff
|
||||||
|
}
|
||||||
|
|
||||||
.border-top-radius (0);
|
.border-top-radius (0);
|
||||||
|
|
||||||
.border-bottom-radius (5px);
|
.border-bottom-radius (5px);
|
||||||
background: @dark-blue;
|
background: @dark-blue;
|
||||||
// background: url(../images/terminal.svg);
|
// background: url(../images/terminal.svg);
|
||||||
|
@ -93,6 +98,7 @@
|
||||||
span {
|
span {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
padding-top: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.all-files {
|
.all-files {
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
h4 {
|
h4 {
|
||||||
margin-top: 30px;
|
margin-top: 30px;
|
||||||
}
|
}
|
||||||
padding: 50px 0;
|
padding: 75px 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
.btn-cta {
|
.btn-cta {
|
||||||
margin: 30px 0;
|
margin: 30px 0;
|
||||||
|
@ -61,6 +61,26 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#github {
|
||||||
|
text-align: center;
|
||||||
|
padding: 50px 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#tor {
|
||||||
|
text-align: center;
|
||||||
|
img {
|
||||||
|
max-width: 100px;
|
||||||
|
margin: 0 auto;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
background: @light-gray;
|
||||||
|
padding: 50px 0;
|
||||||
|
a {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
200
transfersh-web/styles/includes/preview.less
Normal file
|
@ -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;
|
||||||
|
}
|
|
@ -43,12 +43,7 @@ blockquote.twitter-tweet a {
|
||||||
outline: 0 none;
|
outline: 0 none;
|
||||||
}
|
}
|
||||||
|
|
||||||
blockquote.twitter-tweet a:hover,
|
blockquote.tweet-xl {
|
||||||
blockquote.twitter-tweet a:focus {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote.tweet-xl {
|
|
||||||
p {
|
p {
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
line-height: 25px;
|
line-height: 25px;
|
||||||
|
@ -56,4 +51,11 @@ blockquote.twitter-tweet a:focus {
|
||||||
a {
|
a {
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
}
|
}
|
||||||
|
@media (max-width: @screen-xs) {
|
||||||
|
p {
|
||||||
|
font-size: 17px;}
|
||||||
|
a {
|
||||||
|
font-size: 17px;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -622,7 +622,6 @@ address {
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
line-height: 1.42857143;
|
line-height: 1.42857143;
|
||||||
}
|
}
|
||||||
/* @import "../bower_components/bootstrap/less/code.less"; */
|
|
||||||
.container {
|
.container {
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
|
@ -1316,6 +1315,538 @@ address {
|
||||||
margin-left: 0%;
|
margin-left: 0%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
table {
|
||||||
|
max-width: 100%;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.table {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.table > thead > tr > th,
|
||||||
|
.table > tbody > tr > th,
|
||||||
|
.table > tfoot > tr > th,
|
||||||
|
.table > thead > tr > td,
|
||||||
|
.table > tbody > tr > td,
|
||||||
|
.table > tfoot > tr > td {
|
||||||
|
padding: 8px;
|
||||||
|
line-height: 1.42857143;
|
||||||
|
vertical-align: top;
|
||||||
|
border-top: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
.table > thead > tr > th {
|
||||||
|
vertical-align: bottom;
|
||||||
|
border-bottom: 2px solid #dddddd;
|
||||||
|
}
|
||||||
|
.table > caption + thead > tr:first-child > th,
|
||||||
|
.table > colgroup + thead > tr:first-child > th,
|
||||||
|
.table > thead:first-child > tr:first-child > th,
|
||||||
|
.table > caption + thead > tr:first-child > td,
|
||||||
|
.table > colgroup + thead > tr:first-child > td,
|
||||||
|
.table > thead:first-child > tr:first-child > td {
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
.table > tbody + tbody {
|
||||||
|
border-top: 2px solid #dddddd;
|
||||||
|
}
|
||||||
|
.table .table {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
.table-condensed > thead > tr > th,
|
||||||
|
.table-condensed > tbody > tr > th,
|
||||||
|
.table-condensed > tfoot > tr > th,
|
||||||
|
.table-condensed > thead > tr > td,
|
||||||
|
.table-condensed > tbody > tr > td,
|
||||||
|
.table-condensed > tfoot > tr > td {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.table-bordered {
|
||||||
|
border: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
.table-bordered > thead > tr > th,
|
||||||
|
.table-bordered > tbody > tr > th,
|
||||||
|
.table-bordered > tfoot > tr > th,
|
||||||
|
.table-bordered > thead > tr > td,
|
||||||
|
.table-bordered > tbody > tr > td,
|
||||||
|
.table-bordered > tfoot > tr > td {
|
||||||
|
border: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
.table-bordered > thead > tr > th,
|
||||||
|
.table-bordered > thead > tr > td {
|
||||||
|
border-bottom-width: 2px;
|
||||||
|
}
|
||||||
|
.table-striped > tbody > tr:nth-child(odd) > td,
|
||||||
|
.table-striped > tbody > tr:nth-child(odd) > th {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
.table-hover > tbody > tr:hover > td,
|
||||||
|
.table-hover > tbody > tr:hover > th {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
table col[class*="col-"] {
|
||||||
|
position: static;
|
||||||
|
float: none;
|
||||||
|
display: table-column;
|
||||||
|
}
|
||||||
|
table td[class*="col-"],
|
||||||
|
table th[class*="col-"] {
|
||||||
|
float: none;
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
.table > thead > tr > .active,
|
||||||
|
.table > tbody > tr > .active,
|
||||||
|
.table > tfoot > tr > .active,
|
||||||
|
.table > thead > .active > td,
|
||||||
|
.table > tbody > .active > td,
|
||||||
|
.table > tfoot > .active > td,
|
||||||
|
.table > thead > .active > th,
|
||||||
|
.table > tbody > .active > th,
|
||||||
|
.table > tfoot > .active > th {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
.table-hover > tbody > tr > .active:hover,
|
||||||
|
.table-hover > tbody > .active:hover > td,
|
||||||
|
.table-hover > tbody > .active:hover > th {
|
||||||
|
background-color: #e8e8e8;
|
||||||
|
}
|
||||||
|
.table > thead > tr > .success,
|
||||||
|
.table > tbody > tr > .success,
|
||||||
|
.table > tfoot > tr > .success,
|
||||||
|
.table > thead > .success > td,
|
||||||
|
.table > tbody > .success > td,
|
||||||
|
.table > tfoot > .success > td,
|
||||||
|
.table > thead > .success > th,
|
||||||
|
.table > tbody > .success > th,
|
||||||
|
.table > tfoot > .success > th {
|
||||||
|
background-color: #dff0d8;
|
||||||
|
}
|
||||||
|
.table-hover > tbody > tr > .success:hover,
|
||||||
|
.table-hover > tbody > .success:hover > td,
|
||||||
|
.table-hover > tbody > .success:hover > th {
|
||||||
|
background-color: #d0e9c6;
|
||||||
|
}
|
||||||
|
.table > thead > tr > .danger,
|
||||||
|
.table > tbody > tr > .danger,
|
||||||
|
.table > tfoot > tr > .danger,
|
||||||
|
.table > thead > .danger > td,
|
||||||
|
.table > tbody > .danger > td,
|
||||||
|
.table > tfoot > .danger > td,
|
||||||
|
.table > thead > .danger > th,
|
||||||
|
.table > tbody > .danger > th,
|
||||||
|
.table > tfoot > .danger > th {
|
||||||
|
background-color: #f2dede;
|
||||||
|
}
|
||||||
|
.table-hover > tbody > tr > .danger:hover,
|
||||||
|
.table-hover > tbody > .danger:hover > td,
|
||||||
|
.table-hover > tbody > .danger:hover > th {
|
||||||
|
background-color: #ebcccc;
|
||||||
|
}
|
||||||
|
.table > thead > tr > .warning,
|
||||||
|
.table > tbody > tr > .warning,
|
||||||
|
.table > tfoot > tr > .warning,
|
||||||
|
.table > thead > .warning > td,
|
||||||
|
.table > tbody > .warning > td,
|
||||||
|
.table > tfoot > .warning > td,
|
||||||
|
.table > thead > .warning > th,
|
||||||
|
.table > tbody > .warning > th,
|
||||||
|
.table > tfoot > .warning > th {
|
||||||
|
background-color: #fcf8e3;
|
||||||
|
}
|
||||||
|
.table-hover > tbody > tr > .warning:hover,
|
||||||
|
.table-hover > tbody > .warning:hover > td,
|
||||||
|
.table-hover > tbody > .warning:hover > th {
|
||||||
|
background-color: #faf2cc;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.table-responsive {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
overflow-y: hidden;
|
||||||
|
overflow-x: scroll;
|
||||||
|
-ms-overflow-style: -ms-autohiding-scrollbar;
|
||||||
|
border: 1px solid #dddddd;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
.table-responsive > .table {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.table-responsive > .table > thead > tr > th,
|
||||||
|
.table-responsive > .table > tbody > tr > th,
|
||||||
|
.table-responsive > .table > tfoot > tr > th,
|
||||||
|
.table-responsive > .table > thead > tr > td,
|
||||||
|
.table-responsive > .table > tbody > tr > td,
|
||||||
|
.table-responsive > .table > tfoot > tr > td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.table-responsive > .table-bordered {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
.table-responsive > .table-bordered > thead > tr > th:first-child,
|
||||||
|
.table-responsive > .table-bordered > tbody > tr > th:first-child,
|
||||||
|
.table-responsive > .table-bordered > tfoot > tr > th:first-child,
|
||||||
|
.table-responsive > .table-bordered > thead > tr > td:first-child,
|
||||||
|
.table-responsive > .table-bordered > tbody > tr > td:first-child,
|
||||||
|
.table-responsive > .table-bordered > tfoot > tr > td:first-child {
|
||||||
|
border-left: 0;
|
||||||
|
}
|
||||||
|
.table-responsive > .table-bordered > thead > tr > th:last-child,
|
||||||
|
.table-responsive > .table-bordered > tbody > tr > th:last-child,
|
||||||
|
.table-responsive > .table-bordered > tfoot > tr > th:last-child,
|
||||||
|
.table-responsive > .table-bordered > thead > tr > td:last-child,
|
||||||
|
.table-responsive > .table-bordered > tbody > tr > td:last-child,
|
||||||
|
.table-responsive > .table-bordered > tfoot > tr > td:last-child {
|
||||||
|
border-right: 0;
|
||||||
|
}
|
||||||
|
.table-responsive > .table-bordered > tbody > tr:last-child > th,
|
||||||
|
.table-responsive > .table-bordered > tfoot > tr:last-child > th,
|
||||||
|
.table-responsive > .table-bordered > tbody > tr:last-child > td,
|
||||||
|
.table-responsive > .table-bordered > tfoot > tr:last-child > td {
|
||||||
|
border-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fieldset {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
legend {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 21px;
|
||||||
|
line-height: inherit;
|
||||||
|
color: #333333;
|
||||||
|
border: 0;
|
||||||
|
border-bottom: 1px solid #e5e5e5;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
input[type="search"] {
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
input[type="radio"],
|
||||||
|
input[type="checkbox"] {
|
||||||
|
margin: 4px 0 0;
|
||||||
|
margin-top: 1px \9;
|
||||||
|
/* IE8-9 */
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
input[type="file"] {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
select[multiple],
|
||||||
|
select[size] {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
select optgroup {
|
||||||
|
font-size: inherit;
|
||||||
|
font-style: inherit;
|
||||||
|
font-family: inherit;
|
||||||
|
}
|
||||||
|
input[type="file"]:focus,
|
||||||
|
input[type="radio"]:focus,
|
||||||
|
input[type="checkbox"]:focus {
|
||||||
|
outline: thin dotted;
|
||||||
|
outline: 5px auto -webkit-focus-ring-color;
|
||||||
|
outline-offset: -2px;
|
||||||
|
}
|
||||||
|
input[type="number"]::-webkit-outer-spin-button,
|
||||||
|
input[type="number"]::-webkit-inner-spin-button {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
output {
|
||||||
|
display: block;
|
||||||
|
padding-top: 7px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.42857143;
|
||||||
|
color: #555555;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.form-control {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 34px;
|
||||||
|
padding: 6px 12px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.42857143;
|
||||||
|
color: #555555;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-color: #ffffff;
|
||||||
|
background-image: none;
|
||||||
|
border: 1px solid #cccccc;
|
||||||
|
border-radius: 4px;
|
||||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||||
|
-webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
||||||
|
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
||||||
|
}
|
||||||
|
.form-control:focus {
|
||||||
|
border-color: #66afe9;
|
||||||
|
outline: 0;
|
||||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
|
||||||
|
}
|
||||||
|
.form-control:-moz-placeholder {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.form-control::-moz-placeholder {
|
||||||
|
color: #999999;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.form-control:-ms-input-placeholder {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.form-control::-webkit-input-placeholder {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.form-control[disabled],
|
||||||
|
.form-control[readonly],
|
||||||
|
fieldset[disabled] .form-control {
|
||||||
|
cursor: not-allowed;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
}
|
||||||
|
textarea.form-control {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
.form-group {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.radio,
|
||||||
|
.checkbox {
|
||||||
|
display: block;
|
||||||
|
min-height: 20px;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding-left: 20px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.radio label,
|
||||||
|
.checkbox label {
|
||||||
|
display: inline;
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-weight: normal;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.radio input[type="radio"],
|
||||||
|
.radio-inline input[type="radio"],
|
||||||
|
.checkbox input[type="checkbox"],
|
||||||
|
.checkbox-inline input[type="checkbox"] {
|
||||||
|
float: left;
|
||||||
|
margin-left: -20px;
|
||||||
|
}
|
||||||
|
.radio + .radio,
|
||||||
|
.checkbox + .checkbox {
|
||||||
|
margin-top: -5px;
|
||||||
|
}
|
||||||
|
.radio-inline,
|
||||||
|
.checkbox-inline {
|
||||||
|
display: inline-block;
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
vertical-align: middle;
|
||||||
|
font-weight: normal;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.radio-inline + .radio-inline,
|
||||||
|
.checkbox-inline + .checkbox-inline {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
input[type="radio"][disabled],
|
||||||
|
input[type="checkbox"][disabled],
|
||||||
|
.radio[disabled],
|
||||||
|
.radio-inline[disabled],
|
||||||
|
.checkbox[disabled],
|
||||||
|
.checkbox-inline[disabled],
|
||||||
|
fieldset[disabled] input[type="radio"],
|
||||||
|
fieldset[disabled] input[type="checkbox"],
|
||||||
|
fieldset[disabled] .radio,
|
||||||
|
fieldset[disabled] .radio-inline,
|
||||||
|
fieldset[disabled] .checkbox,
|
||||||
|
fieldset[disabled] .checkbox-inline {
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
.input-sm {
|
||||||
|
height: 30px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 1.5;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
select.input-sm {
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
textarea.input-sm {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
.input-lg {
|
||||||
|
height: 46px;
|
||||||
|
padding: 10px 16px;
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 1.33;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
select.input-lg {
|
||||||
|
height: 46px;
|
||||||
|
line-height: 46px;
|
||||||
|
}
|
||||||
|
textarea.input-lg {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
.has-warning .help-block,
|
||||||
|
.has-warning .control-label,
|
||||||
|
.has-warning .radio,
|
||||||
|
.has-warning .checkbox,
|
||||||
|
.has-warning .radio-inline,
|
||||||
|
.has-warning .checkbox-inline {
|
||||||
|
color: #8a6d3b;
|
||||||
|
}
|
||||||
|
.has-warning .form-control {
|
||||||
|
border-color: #8a6d3b;
|
||||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||||
|
}
|
||||||
|
.has-warning .form-control:focus {
|
||||||
|
border-color: #66512c;
|
||||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
|
||||||
|
}
|
||||||
|
.has-warning .input-group-addon {
|
||||||
|
color: #8a6d3b;
|
||||||
|
border-color: #8a6d3b;
|
||||||
|
background-color: #fcf8e3;
|
||||||
|
}
|
||||||
|
.has-error .help-block,
|
||||||
|
.has-error .control-label,
|
||||||
|
.has-error .radio,
|
||||||
|
.has-error .checkbox,
|
||||||
|
.has-error .radio-inline,
|
||||||
|
.has-error .checkbox-inline {
|
||||||
|
color: #a94442;
|
||||||
|
}
|
||||||
|
.has-error .form-control {
|
||||||
|
border-color: #a94442;
|
||||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||||
|
}
|
||||||
|
.has-error .form-control:focus {
|
||||||
|
border-color: #843534;
|
||||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
|
||||||
|
}
|
||||||
|
.has-error .input-group-addon {
|
||||||
|
color: #a94442;
|
||||||
|
border-color: #a94442;
|
||||||
|
background-color: #f2dede;
|
||||||
|
}
|
||||||
|
.has-success .help-block,
|
||||||
|
.has-success .control-label,
|
||||||
|
.has-success .radio,
|
||||||
|
.has-success .checkbox,
|
||||||
|
.has-success .radio-inline,
|
||||||
|
.has-success .checkbox-inline {
|
||||||
|
color: #3c763d;
|
||||||
|
}
|
||||||
|
.has-success .form-control {
|
||||||
|
border-color: #3c763d;
|
||||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||||
|
}
|
||||||
|
.has-success .form-control:focus {
|
||||||
|
border-color: #2b542c;
|
||||||
|
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
|
||||||
|
}
|
||||||
|
.has-success .input-group-addon {
|
||||||
|
color: #3c763d;
|
||||||
|
border-color: #3c763d;
|
||||||
|
background-color: #dff0d8;
|
||||||
|
}
|
||||||
|
.form-control-static {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.help-block {
|
||||||
|
display: block;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
color: #7b7b7b;
|
||||||
|
}
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.form-inline .form-group {
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: 0;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.form-inline .form-control {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.form-inline select.form-control {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
.form-inline .radio,
|
||||||
|
.form-inline .checkbox {
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
.form-inline .radio input[type="radio"],
|
||||||
|
.form-inline .checkbox input[type="checkbox"] {
|
||||||
|
float: none;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.form-horizontal .control-label,
|
||||||
|
.form-horizontal .radio,
|
||||||
|
.form-horizontal .checkbox,
|
||||||
|
.form-horizontal .radio-inline,
|
||||||
|
.form-horizontal .checkbox-inline {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding-top: 7px;
|
||||||
|
}
|
||||||
|
.form-horizontal .radio,
|
||||||
|
.form-horizontal .checkbox {
|
||||||
|
min-height: 27px;
|
||||||
|
}
|
||||||
|
.form-horizontal .form-group {
|
||||||
|
margin-left: -35px;
|
||||||
|
margin-right: -35px;
|
||||||
|
}
|
||||||
|
.form-horizontal .form-group:before,
|
||||||
|
.form-horizontal .form-group:after {
|
||||||
|
content: " ";
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
.form-horizontal .form-group:after {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.form-horizontal .form-group:before,
|
||||||
|
.form-horizontal .form-group:after {
|
||||||
|
content: " ";
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
.form-horizontal .form-group:after {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.form-horizontal .form-control-static {
|
||||||
|
padding-top: 7px;
|
||||||
|
}
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.form-horizontal .control-label {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
.fade {
|
.fade {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
-webkit-transition: opacity 0.15s linear;
|
-webkit-transition: opacity 0.15s linear;
|
||||||
|
@ -5358,6 +5889,10 @@ body {
|
||||||
-o-animation-duration: 0.75s;
|
-o-animation-duration: 0.75s;
|
||||||
animation-duration: 0.75s;
|
animation-duration: 0.75s;
|
||||||
}
|
}
|
||||||
|
body {
|
||||||
|
max-width: 2000px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
.browsehappy {
|
.browsehappy {
|
||||||
margin: 0.2em 0;
|
margin: 0.2em 0;
|
||||||
background: orange;
|
background: orange;
|
||||||
|
@ -5369,8 +5904,8 @@ body {
|
||||||
}
|
}
|
||||||
#navigation ul {
|
#navigation ul {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
max-width: 300px;
|
max-width: 400px;
|
||||||
margin: 0 auto;
|
marghomein: 0 auto;
|
||||||
}
|
}
|
||||||
#navigation li {
|
#navigation li {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
@ -5397,12 +5932,12 @@ body {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
color: #3b3b3b;
|
color: #3b3b3b;
|
||||||
}
|
}
|
||||||
h2 {
|
.page-title {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 35px;
|
font-size: 35px;
|
||||||
}
|
}
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
h2 {
|
.page-title {
|
||||||
font-size: 50px;
|
font-size: 50px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5482,17 +6017,17 @@ a:hover {
|
||||||
#home {
|
#home {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
#home h2 {
|
#home .page-title {
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
}
|
}
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
#home {
|
#home {
|
||||||
padding: 50px;
|
padding: 50px;
|
||||||
}
|
}
|
||||||
#home h2 {
|
#home .page-title {
|
||||||
font-size: 45px;
|
font-size: 45px;
|
||||||
margin-top: -20px;
|
margin-top: -20px;
|
||||||
margin-bottom: 45px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#home .btn-home {
|
#home .btn-home {
|
||||||
|
@ -5561,6 +6096,9 @@ a:hover {
|
||||||
backbground-repeat: no-repeat;
|
backbground-repeat: no-repeat;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
.terminal a {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
.terminal-top {
|
.terminal-top {
|
||||||
border-top-right-radius: 5px;
|
border-top-right-radius: 5px;
|
||||||
border-top-left-radius: 5px;
|
border-top-left-radius: 5px;
|
||||||
|
@ -5571,6 +6109,7 @@ a:hover {
|
||||||
}
|
}
|
||||||
.upload-progress {
|
.upload-progress {
|
||||||
max-width: 80%;
|
max-width: 80%;
|
||||||
|
padding-top: 4px;
|
||||||
}
|
}
|
||||||
.upload-progress .bar {
|
.upload-progress .bar {
|
||||||
word-wrap: normal;
|
word-wrap: normal;
|
||||||
|
@ -5603,7 +6142,7 @@ a:hover {
|
||||||
font-size: 100px;
|
font-size: 100px;
|
||||||
}
|
}
|
||||||
#samples {
|
#samples {
|
||||||
padding: 50px 0;
|
padding: 75px 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
#samples h4 {
|
#samples h4 {
|
||||||
|
@ -5643,6 +6182,23 @@ a:hover {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
#github {
|
||||||
|
text-align: center;
|
||||||
|
padding: 50px 0;
|
||||||
|
}
|
||||||
|
#tor {
|
||||||
|
text-align: center;
|
||||||
|
background: #f6f8f8;
|
||||||
|
padding: 50px 0;
|
||||||
|
}
|
||||||
|
#tor img {
|
||||||
|
max-width: 100px;
|
||||||
|
margin: 0 auto;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
#tor a {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
footer {
|
footer {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: #36535a;
|
background: #36535a;
|
||||||
|
@ -5720,10 +6276,6 @@ blockquote.twitter-tweet a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
outline: 0 none;
|
outline: 0 none;
|
||||||
}
|
}
|
||||||
blockquote.twitter-tweet a:hover,
|
|
||||||
blockquote.twitter-tweet a:focus {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
blockquote.tweet-xl p {
|
blockquote.tweet-xl p {
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
line-height: 25px;
|
line-height: 25px;
|
||||||
|
@ -5731,6 +6283,14 @@ blockquote.tweet-xl p {
|
||||||
blockquote.tweet-xl a {
|
blockquote.tweet-xl a {
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
}
|
}
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
blockquote.tweet-xl p {
|
||||||
|
font-size: 17px;
|
||||||
|
}
|
||||||
|
blockquote.tweet-xl a {
|
||||||
|
font-size: 17px;
|
||||||
|
}
|
||||||
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "transfersh";
|
font-family: "transfersh";
|
||||||
src: url("../fonts/transfersh.eot");
|
src: url("../fonts/transfersh.eot");
|
||||||
|
@ -5807,4 +6367,181 @@ blockquote.tweet-xl a {
|
||||||
.icon-gplus:before {
|
.icon-gplus:before {
|
||||||
content: "p";
|
content: "p";
|
||||||
}
|
}
|
||||||
|
.preview-wrapper {
|
||||||
|
padding-bottom: 30px;
|
||||||
|
}
|
||||||
|
html {
|
||||||
|
min-height: 100%;
|
||||||
|
}
|
||||||
|
#download {
|
||||||
|
position: static;
|
||||||
|
}
|
||||||
|
#download footer {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
.preview-image {
|
||||||
|
padding: 0;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
.preview-image img {
|
||||||
|
margin: 0 auto;
|
||||||
|
display: block;
|
||||||
|
max-width: 800px;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
.overlay {
|
||||||
|
position: fixed;
|
||||||
|
z-index: 100;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.2s ease;
|
||||||
|
}
|
||||||
|
.active .overlay {
|
||||||
|
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: #85b5bb;
|
||||||
|
border-radius: 2px;
|
||||||
|
transform: translateX(-50%) translateY(-50%);
|
||||||
|
transition: opacity 0.2s ease;
|
||||||
|
clip: rect(1px 1px 1px 1px);
|
||||||
|
opacity: 0;
|
||||||
|
top: -9999999px;
|
||||||
|
left: -9999999px;
|
||||||
|
}
|
||||||
|
.active .copy-link-wrapper {
|
||||||
|
clip: auto;
|
||||||
|
opacity: 1;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
}
|
||||||
|
.copy-link-wrapper p {
|
||||||
|
font-size: 20px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.copy-link-wrapper input {
|
||||||
|
background-color: #f6f8f8;
|
||||||
|
color: #3b3b3b;
|
||||||
|
border: 0;
|
||||||
|
font-size: 1em;
|
||||||
|
padding: 1em;
|
||||||
|
margin: 0;
|
||||||
|
width: 100%;
|
||||||
|
border-radius: 2px;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
.copy-link-wrapper .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: #36535a;
|
||||||
|
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: #85b5bb;
|
||||||
|
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;
|
||||||
|
}
|
||||||
/*# sourceMappingURL=/styles/main.css.map */
|
/*# sourceMappingURL=/styles/main.css.map */
|
|
@ -9,5 +9,6 @@
|
||||||
@import "includes/pages";
|
@import "includes/pages";
|
||||||
@import "includes/reviews";
|
@import "includes/reviews";
|
||||||
@import "includes/transfersh-icons";
|
@import "includes/transfersh-icons";
|
||||||
|
@import "includes/preview";
|
||||||
|
|
||||||
|
|
||||||
|
|