pasu 0.0.3 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +2 -1
- data/lib/pasu/application.rb +10 -2
- data/lib/pasu/runner.rb +4 -0
- data/lib/pasu/version.rb +1 -1
- data/pasu.gemspec +4 -4
- metadata +45 -27
- checksums.yaml +0 -7
data/README.md
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
Pasu is a simple HTTP Server for serving (and uploading) Files.
|
6
6
|
|
7
7
|
## Requirements
|
8
|
-
- Ruby
|
8
|
+
- Ruby >= 1.9.3
|
9
9
|
|
10
10
|
## Installation
|
11
11
|
|
@@ -26,6 +26,7 @@ $ pasu
|
|
26
26
|
| -v, --version | Print version. | |
|
27
27
|
| -d, --directory DIRECTORY | Set the base directory for listing files. | pwd |
|
28
28
|
| --no-recursion | Don't recursively list directories. | false |
|
29
|
+
| --no-dotfiles | Don't list dotfiles. | false |
|
29
30
|
| -u, --upload | Allow uploading of files. | false |
|
30
31
|
| --basic-auth USER:PW | Only allowing requests with valid user/pw combination provided. | None |
|
31
32
|
| -b, --bind HOST | Bind the server to the given host. | 0.0.0.0 |
|
data/lib/pasu/application.rb
CHANGED
@@ -4,7 +4,8 @@ module Pasu
|
|
4
4
|
plugin Cuba::Render
|
5
5
|
|
6
6
|
settings[:render][:template_engine] = 'slim'
|
7
|
-
|
7
|
+
dir = File.expand_path(File.dirname(__FILE__))
|
8
|
+
settings[:render][:views] = File.join(dir, '..', '..', 'views')
|
8
9
|
|
9
10
|
class << self
|
10
11
|
def setup(options = {})
|
@@ -17,6 +18,7 @@ module Pasu
|
|
17
18
|
{
|
18
19
|
directory: Pathname.pwd,
|
19
20
|
recursive: true,
|
21
|
+
dotfiles: true,
|
20
22
|
upload: false,
|
21
23
|
basic_auth: {},
|
22
24
|
host: '0.0.0.0',
|
@@ -116,6 +118,7 @@ module Pasu
|
|
116
118
|
path.children.tap do |files|
|
117
119
|
files.select! { |file| (file.directory? || file.file?) && file.readable? }
|
118
120
|
files.sort_by! { |file| [file.ftype, file.basename] }
|
121
|
+
files.reject! { |file| unallowed_dotfile?(file) }
|
119
122
|
|
120
123
|
if settings[:recursive]
|
121
124
|
if path != settings[:directory]
|
@@ -132,17 +135,22 @@ module Pasu
|
|
132
135
|
end
|
133
136
|
|
134
137
|
def file
|
135
|
-
@path.file? && @path.readable? && allowed_directory?(@path.parent)
|
138
|
+
@path.file? && @path.readable? && allowed_directory?(@path.parent) && !unallowed_dotfile?(@path)
|
136
139
|
end
|
137
140
|
|
138
141
|
def allowed_directory?(directory)
|
139
142
|
is_descendant = directory.ascend do |ascendant|
|
143
|
+
return false if unallowed_dotfile?(ascendant)
|
140
144
|
break(true) if ascendant == settings[:directory]
|
141
145
|
end
|
142
146
|
|
143
147
|
(settings[:recursive] || directory == settings[:directory]) && is_descendant
|
144
148
|
end
|
145
149
|
|
150
|
+
def unallowed_dotfile?(path)
|
151
|
+
!settings[:dotfiles] && File.basename(path).start_with?('.')
|
152
|
+
end
|
153
|
+
|
146
154
|
# TODO: wb correct?
|
147
155
|
def save_file(directory, file)
|
148
156
|
path = directory.join(file[:filename])
|
data/lib/pasu/runner.rb
CHANGED
@@ -27,6 +27,10 @@ module Pasu
|
|
27
27
|
options[:recursive] = false
|
28
28
|
end
|
29
29
|
|
30
|
+
p.on('--no-dotfiles', "Don't list dotfiles. (Default: false)") do
|
31
|
+
options[:dotfiles] = false
|
32
|
+
end
|
33
|
+
|
30
34
|
p.on('-u', '--upload', 'Allow uploading of files. (Default: false)') do
|
31
35
|
options[:upload] = true
|
32
36
|
end
|
data/lib/pasu/version.rb
CHANGED
data/pasu.gemspec
CHANGED
@@ -19,15 +19,15 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
spec.required_ruby_version = '
|
22
|
+
spec.required_ruby_version = '>= 1.9.3'
|
23
23
|
|
24
24
|
spec.add_runtime_dependency 'cuba', '~> 3.1'
|
25
25
|
spec.add_runtime_dependency 'cuba-sendfile', '0.0.2'
|
26
26
|
spec.add_runtime_dependency 'slim', '~> 2.0'
|
27
27
|
spec.add_runtime_dependency 'tilt', '~> 2.0'
|
28
|
-
spec.add_runtime_dependency 'puma', '~> 2.
|
28
|
+
spec.add_runtime_dependency 'puma', '~> 2.7'
|
29
29
|
|
30
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
31
|
-
spec.add_development_dependency 'rake', '~> 10.
|
30
|
+
spec.add_development_dependency 'bundler', '~> 1.5'
|
31
|
+
spec.add_development_dependency 'rake', '~> 10.1'
|
32
32
|
spec.add_development_dependency 'pry', '0.9.12.6'
|
33
33
|
end
|
metadata
CHANGED
@@ -1,32 +1,36 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pasu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Tobias Bühlmann
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-
|
12
|
+
date: 2014-09-16 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: cuba
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- -
|
19
|
+
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '3.1'
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - ~>
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '3.1'
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: cuba-sendfile
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - '='
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - '='
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,76 +46,87 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: slim
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- -
|
51
|
+
- - ~>
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '2.0'
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '2.0'
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: tilt
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
|
-
- -
|
67
|
+
- - ~>
|
60
68
|
- !ruby/object:Gem::Version
|
61
69
|
version: '2.0'
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
|
-
- -
|
75
|
+
- - ~>
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: '2.0'
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: puma
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
|
-
- -
|
83
|
+
- - ~>
|
74
84
|
- !ruby/object:Gem::Version
|
75
|
-
version: '2.
|
85
|
+
version: '2.7'
|
76
86
|
type: :runtime
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
|
-
- -
|
91
|
+
- - ~>
|
81
92
|
- !ruby/object:Gem::Version
|
82
|
-
version: '2.
|
93
|
+
version: '2.7'
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: bundler
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
|
-
- -
|
99
|
+
- - ~>
|
88
100
|
- !ruby/object:Gem::Version
|
89
|
-
version: '1.
|
101
|
+
version: '1.5'
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
|
-
- -
|
107
|
+
- - ~>
|
95
108
|
- !ruby/object:Gem::Version
|
96
|
-
version: '1.
|
109
|
+
version: '1.5'
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: rake
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
|
-
- -
|
115
|
+
- - ~>
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: '10.
|
117
|
+
version: '10.1'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
107
122
|
requirements:
|
108
|
-
- -
|
123
|
+
- - ~>
|
109
124
|
- !ruby/object:Gem::Version
|
110
|
-
version: '10.
|
125
|
+
version: '10.1'
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
127
|
name: pry
|
113
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
114
130
|
requirements:
|
115
131
|
- - '='
|
116
132
|
- !ruby/object:Gem::Version
|
@@ -118,6 +134,7 @@ dependencies:
|
|
118
134
|
type: :development
|
119
135
|
prerelease: false
|
120
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
121
138
|
requirements:
|
122
139
|
- - '='
|
123
140
|
- !ruby/object:Gem::Version
|
@@ -130,7 +147,7 @@ executables:
|
|
130
147
|
extensions: []
|
131
148
|
extra_rdoc_files: []
|
132
149
|
files:
|
133
|
-
-
|
150
|
+
- .gitignore
|
134
151
|
- Gemfile
|
135
152
|
- LICENSE
|
136
153
|
- README.md
|
@@ -150,25 +167,26 @@ files:
|
|
150
167
|
homepage: https://github.com/tbuehlmann/pasu
|
151
168
|
licenses:
|
152
169
|
- MIT
|
153
|
-
metadata: {}
|
154
170
|
post_install_message:
|
155
171
|
rdoc_options: []
|
156
172
|
require_paths:
|
157
173
|
- lib
|
158
174
|
required_ruby_version: !ruby/object:Gem::Requirement
|
175
|
+
none: false
|
159
176
|
requirements:
|
160
|
-
- -
|
177
|
+
- - ! '>='
|
161
178
|
- !ruby/object:Gem::Version
|
162
|
-
version:
|
179
|
+
version: 1.9.3
|
163
180
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
|
+
none: false
|
164
182
|
requirements:
|
165
|
-
- -
|
183
|
+
- - ! '>='
|
166
184
|
- !ruby/object:Gem::Version
|
167
185
|
version: '0'
|
168
186
|
requirements: []
|
169
187
|
rubyforge_project:
|
170
|
-
rubygems_version:
|
188
|
+
rubygems_version: 1.8.29
|
171
189
|
signing_key:
|
172
|
-
specification_version:
|
190
|
+
specification_version: 3
|
173
191
|
summary: Simple File Serving HTTP Server
|
174
192
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 112b521d011f9cea2c3cab632bc0fd8c421fcb92
|
4
|
-
data.tar.gz: af9d1fa92717476777e3f601b689a87989264a2b
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: d71284ce3d1745d4d2093b7152a56feb5a2decaa02bbb6dab29e5019b1c4b6cbe02e2cfb263193a4f23d4b51bac1709d455ca0ca45f863739531ed4721e7e11f
|
7
|
-
data.tar.gz: f6d13802da6b30c7fecd3d15e741571b4b0147cdf9d93fe5995d879279c632bf3b856d9f383d6d42ebda29590c037677128df4f0362f71e3992bf7ccb8f4cac8
|