summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Simianer <p@simianer.de>2016-06-22 07:04:12 +0200
committerPatrick Simianer <p@simianer.de>2016-06-22 07:04:12 +0200
commit669ce7abd7d6b632bf1844afdb2cf0b28e1efed6 (patch)
tree3d6add77d3629a039f785d951844f378eca1a44b
parent9097ff1e4ecdf42c99585bc9d399590442720052 (diff)
faster, better, stronger
-rw-r--r--.gitignore2
-rw-r--r--README2
-rw-r--r--config.ru2
-rw-r--r--file_upload.rb13
-rw-r--r--public/main.css16
-rw-r--r--public/upload.html7
-rw-r--r--views/index.haml43
7 files changed, 61 insertions, 24 deletions
diff --git a/.gitignore b/.gitignore
index 8b13789..40dee6a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
+upload/*
+log
diff --git a/README b/README
index 51f5daa..691b440 100644
--- a/README
+++ b/README
@@ -1,2 +1,4 @@
rackup config.ru
+iptables -i eth2 -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8000
+
diff --git a/config.ru b/config.ru
index 0c8b758..55c1ebc 100644
--- a/config.ru
+++ b/config.ru
@@ -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&ouml;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&auml;len kann. Dabei bitte beachten, dass gleich benannte Dateien &uuml;berschrieben werden (also besser mehrere Ordner anlegen)!
- %br
- %br
- Bei Fragen bitte an Patrick &lt;<a href="mailto:p@simianer.de">p@simianer.de</a>&gt; 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&ouml;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&ouml;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&auml;hlen kann -- einfach auf den roten Button klicken, Dateien ausw&auml;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 &uuml;berschrieben werden (also besser mehrere Ordner anlegen)!
+ %br
+ %br
+ Bei Fragen bitte an Patrick &lt;<a href="mailto:p@simianer.de">p@simianer.de</a>&gt; wenden.
+ %br
+ Funktioniert mit Firefox, Chrome, Safari, Android und iOS, Internet Explorer geht auch, der zeigt aber nicht die bereits hochgeladenen Dateien an.