diff options
author | Patrick Simianer <p@simianer.de> | 2016-06-22 07:04:12 +0200 |
---|---|---|
committer | Patrick Simianer <p@simianer.de> | 2016-06-22 07:04:12 +0200 |
commit | 669ce7abd7d6b632bf1844afdb2cf0b28e1efed6 (patch) | |
tree | 3d6add77d3629a039f785d951844f378eca1a44b | |
parent | 9097ff1e4ecdf42c99585bc9d399590442720052 (diff) |
faster, better, stronger
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | config.ru | 2 | ||||
-rw-r--r-- | file_upload.rb | 13 | ||||
-rw-r--r-- | public/main.css | 16 | ||||
-rw-r--r-- | public/upload.html | 7 | ||||
-rw-r--r-- | views/index.haml | 43 |
7 files changed, 61 insertions, 24 deletions
@@ -1 +1,3 @@ +upload/* +log @@ -1,2 +1,4 @@ rackup config.ru +iptables -i eth2 -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8000 + @@ -1,4 +1,4 @@ require './file_upload' -run FileUpload +FileUpload.run! diff --git a/file_upload.rb b/file_upload.rb index 5bb1d44..0599ef3 100644 --- a/file_upload.rb +++ b/file_upload.rb @@ -1,4 +1,4 @@ -require 'sinatra/base' +require 'sinatra' require 'haml' class FileUpload < Sinatra::Base @@ -6,6 +6,9 @@ class FileUpload < Sinatra::Base enable :static enable :sessions + #set :bind, 'upload.simianer.de' + set :port, 8000 + set :environment, :production set :views, File.join(File.dirname(__FILE__), 'views') set :public_folder, File.join(File.dirname(__FILE__), 'public') end @@ -30,12 +33,12 @@ class FileUpload < Sinatra::Base saved_token = `cat #{dir}/.token`.strip if token == saved_token return true - end + end return false end def check_dirname dirname - return dirname.match /^[a-zA-Z0-9_-]+$/ + return dirname.match /^[a-zA-Z0-9_]+$/ end def get_dir dirname @@ -101,7 +104,7 @@ class FileUpload < Sinatra::Base get "/list_dir/:dirname/:token" do log '/list_dir', params - + dirname = params[:dirname] dir = get_dir dirname token = params[:token] @@ -110,7 +113,7 @@ class FileUpload < Sinatra::Base if allowed s = "<ul>" - s += Dir[dir+"/*"].map { |i| i.gsub(get_dir(""),"") }.map { |i| "<li>#{i}</li>" }.join "\n" + s += Dir[dir+"/*"].map { |i| i.gsub(get_dir(""),"") }.map { |i| "<li>#{i}</li>" }.sort.join "\n" s += "</ul>" return s end diff --git a/public/main.css b/public/main.css new file mode 100644 index 0000000..529e8d6 --- /dev/null +++ b/public/main.css @@ -0,0 +1,16 @@ +body { + font-size:1.25em; + color: #000; + background: #fff +} + +input { + height:2em; + padding: .25em; + border: 1px solid #000 +} + +#wrapper { + margin:3em +} + diff --git a/public/upload.html b/public/upload.html index a6876ac..06fe8dd 100644 --- a/public/upload.html +++ b/public/upload.html @@ -4,6 +4,7 @@ <meta charset="utf-8"> <title>Upload</title> <script type='text/javascript' src='https://code.jquery.com/jquery-3.0.0.min.js'></script> + <link href="main.css" rel="stylesheet"> <link href="fine-uploader.css" rel="stylesheet"> <script src="fine-uploader.js"></script> <script type="text/template" id="qq-template"> @@ -117,14 +118,16 @@ <body> + <div id="wrapper"> <div id="fine-uploader"></div> <br /> <br /> <br /> Derzeitige Dateien/Current files: <div id="list"></div> - <p><strong>Verzeichnis/Directory: <span id="dirname"></span>, - token: <span id="token"></span>, token OK: <span id="ok"></span></strong></p> + <p style="font-size:.6em"><strong>Ordner/Folder: <span id="dirname" style="text-decoration:underline"></span>, + token: <span id="token" style="text-decoration:underline"></span>, token OK: <span id="ok" style="text-decoration:underline"></span></strong></p> + </div> </body> </html> diff --git a/views/index.haml b/views/index.haml index 0c07217..098471e 100644 --- a/views/index.haml +++ b/views/index.haml @@ -2,21 +2,32 @@ %head %title Upload files/Dateien hochladen %meta{ :charset => "utf-8" } + %link{ :href => "main.css", :rel => "stylesheet" } %body - %form{ :action => 'mkdir', :method => 'post' } - Directory/Verzeichnis: - %input{ :name => 'dirname', :id => 'dirname' } - Token: - %input{ :name => 'token', :id => 'token' } - %input{ :type => 'submit', :value => "Verzeichnis auswählen/Select directory" } - %p - %strong - Eine kleine Anleitung: - Einfach einen Ordnernamen und ein dazugehöriges 'token' ausdenken (das ist - eine Art Passwort, welches nur dazu dient den Upload nach Abbruch fortzusetzen und gleichzeitig - eine mehrfache Benutzung eines Ordners zu verhindern). Wenn alles gut geht gelangt ihr auf eine sehr schlichte - Seite auf der man die Dateien zum Hochladen auswälen kann. Dabei bitte beachten, dass gleich benannte Dateien überschrieben werden (also besser mehrere Ordner anlegen)! - %br - %br - Bei Fragen bitte an Patrick <<a href="mailto:p@simianer.de">p@simianer.de</a>> wenden. + %div{ :id => "wrapper" } + %form{ :action => 'mkdir', :method => 'post' } + %table + %tr + %td Ordner/Folder: + %td + %input{ :name => 'dirname', :id => 'dirname' } + %tr + %td Token: + %td + %input{ :name => 'token', :id => 'token', :value =>"" } + %tr + %td{ :colspan => 2, :style => "text-align:center;padding:1em" } + %input{ :type => 'submit', :value => "Ordner auswählen/Select folder" } + %p + %strong + Eine kleine Anleitung: + Einfach einen Ordnernamen (dieser darf die Buchstaben A-Z ohne Umlaute, Ziffern und den Unterstrich enthalten '_') und ein dazugehöriges 'token' ausdenken (das ist + eine Art Passwort, welches nur dazu dient den Upload nach Abbruch fortzusetzen und gleichzeitig + eine Mehrfachnutzung eines Ordners zu verhindern). Den Ordner und das zugehörige token bitte merken!<br /><br />Wenn alles gut geht gelangt ihr auf eine sehr schlichte + Seite auf der man die Dateien zum Hochladen auswählen kann -- einfach auf den roten Button klicken, Dateien auswählen (auch mehrere auf einmal!) und dann geht der Upload auch schon los. Die bereits hochgeladenen Dateien werden als Liste angezeigt. Dabei bitte beachten, dass gleich benannte Dateien überschrieben werden (also besser mehrere Ordner anlegen)! + %br + %br + Bei Fragen bitte an Patrick <<a href="mailto:p@simianer.de">p@simianer.de</a>> wenden. + %br + Funktioniert mit Firefox, Chrome, Safari, Android und iOS, Internet Explorer geht auch, der zeigt aber nicht die bereits hochgeladenen Dateien an. |