pasu 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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 ~> 2.0
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 |
@@ -4,7 +4,8 @@ module Pasu
4
4
  plugin Cuba::Render
5
5
 
6
6
  settings[:render][:template_engine] = 'slim'
7
- settings[:render][:views] = File.join(__dir__, '..', '..', 'views')
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])
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Pasu
2
- VERSION = Gem::Version.new('0.0.3')
2
+ VERSION = Gem::Version.new('0.1.0')
3
3
  end
@@ -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 = '~> 2.0'
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.8'
28
+ spec.add_runtime_dependency 'puma', '~> 2.7'
29
29
 
30
- spec.add_development_dependency 'bundler', '~> 1.6'
31
- spec.add_development_dependency 'rake', '~> 10.2'
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.3
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-04-06 00:00:00.000000000 Z
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.8'
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.8'
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.6'
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.6'
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.2'
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.2'
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
- - ".gitignore"
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: '2.0'
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: 2.2.2
188
+ rubygems_version: 1.8.29
171
189
  signing_key:
172
- specification_version: 4
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