el_finder 1.0.18 → 1.0.19
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/.gitignore +1 -0
- data/Gemfile +1 -1
- data/lib/el_finder/base64.rb +17 -0
- data/lib/el_finder/connector.rb +16 -4
- data/lib/el_finder/version.rb +1 -1
- data/lib/el_finder.rb +1 -0
- data/test/test_el_finder_hash.rb +4 -4
- metadata +6 -5
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
if RUBY_VERSION < '1.9'
|
2
|
+
begin
|
3
|
+
require 'base64'
|
4
|
+
rescue LoadError
|
5
|
+
end
|
6
|
+
|
7
|
+
if defined? ::Base64
|
8
|
+
module ::Base64
|
9
|
+
def self.urlsafe_encode64(bin)
|
10
|
+
[bin].pack("m0").tr("+/", "-_")
|
11
|
+
end
|
12
|
+
def self.urlsafe_decode64(str)
|
13
|
+
str.tr("-_", "+/").unpack("m0").first
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/el_finder/connector.rb
CHANGED
@@ -59,7 +59,7 @@ module ElFinder
|
|
59
59
|
end
|
60
60
|
|
61
61
|
@current = @params[:current] ? from_hash(@params[:current]) : nil
|
62
|
-
@target = @params[:target] ? from_hash(@params[:target]) : nil
|
62
|
+
@target = (@params[:target] and !@params[:target].empty?) ? from_hash(@params[:target]) : nil
|
63
63
|
if params[:targets]
|
64
64
|
@targets = @params[:targets].map{|t| from_hash(t)}
|
65
65
|
end
|
@@ -76,12 +76,24 @@ module ElFinder
|
|
76
76
|
|
77
77
|
#
|
78
78
|
def to_hash(pathname)
|
79
|
-
|
79
|
+
# note that '=' are removed
|
80
|
+
Base64.urlsafe_encode64(pathname.path.to_s).chomp.tr("=\n", "")
|
80
81
|
end # of to_hash
|
81
82
|
|
82
83
|
#
|
83
84
|
def from_hash(hash)
|
84
|
-
|
85
|
+
# restore missing '='
|
86
|
+
len = hash.length % 4
|
87
|
+
hash += '==' if len == 1 or len == 2
|
88
|
+
hash += '=' if len == 3
|
89
|
+
|
90
|
+
pathname = @root + Base64.urlsafe_decode64(hash)
|
91
|
+
rescue ArgumentError => e
|
92
|
+
if e.message == 'invalid base64'
|
93
|
+
nil
|
94
|
+
else
|
95
|
+
raise
|
96
|
+
end
|
85
97
|
end # of from_hash
|
86
98
|
|
87
99
|
#
|
@@ -315,7 +327,7 @@ module ElFinder
|
|
315
327
|
|
316
328
|
#
|
317
329
|
def _extract
|
318
|
-
@response[:error] = 'Invalid Parameters' and return
|
330
|
+
@response[:error] = 'Invalid Parameters' and return if @target.nil? || @current.nil? || !(@target.file? && @current.directory?)
|
319
331
|
@response[:error] = 'Access Denied' and return unless perms_for(@target)[:read] == true && perms_for(@current)[:write] == true
|
320
332
|
@response[:error] = 'No extractor available for this file type' and return if (extractor = @options[:extractors][mime_handler.for(@target)]).nil?
|
321
333
|
cmd = ['cd', @current.to_s.shellescape, '&&', extractor.map(&:shellescape), @target.basename.to_s.shellescape].flatten.join(' ')
|
data/lib/el_finder/version.rb
CHANGED
data/lib/el_finder.rb
CHANGED
data/test/test_el_finder_hash.rb
CHANGED
@@ -7,13 +7,13 @@ class TestElFinder < Test::Unit::TestCase
|
|
7
7
|
################################################################################
|
8
8
|
|
9
9
|
def test_to_hash_method
|
10
|
-
assert_equal Base64.
|
11
|
-
assert_equal Base64.
|
10
|
+
assert_equal Base64.urlsafe_encode64('foo/bar').chomp.tr("=\n", ""), @elfinder.to_hash(ElFinder::Pathname.new(@vroot, 'foo/bar'))
|
11
|
+
assert_equal Base64.urlsafe_encode64('.').chomp.tr("=\n", ""), @elfinder.to_hash(ElFinder::Pathname.new(@vroot))
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_from_hash_method
|
15
|
-
assert_equal File.join(@vroot, 'foo/bar'), @elfinder.from_hash(Base64.
|
16
|
-
assert_equal @vroot, @elfinder.from_hash(Base64.
|
15
|
+
assert_equal File.join(@vroot, 'foo/bar'), @elfinder.from_hash(Base64.urlsafe_encode64('foo/bar').chomp).to_s
|
16
|
+
assert_equal @vroot, @elfinder.from_hash(Base64.urlsafe_encode64('.').chomp).to_s
|
17
17
|
end
|
18
18
|
|
19
19
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: el_finder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 49
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 19
|
10
|
+
version: 1.0.19
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Philip Hallstrom
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-11-27 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: image_size
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- el_finder.gemspec
|
53
53
|
- lib/el_finder.rb
|
54
54
|
- lib/el_finder/action.rb
|
55
|
+
- lib/el_finder/base64.rb
|
55
56
|
- lib/el_finder/connector.rb
|
56
57
|
- lib/el_finder/image.rb
|
57
58
|
- lib/el_finder/mime_type.rb
|
@@ -106,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
107
|
requirements:
|
107
108
|
- ImageMagick
|
108
109
|
rubyforge_project: el_finder
|
109
|
-
rubygems_version: 1.8.
|
110
|
+
rubygems_version: 1.8.10
|
110
111
|
signing_key:
|
111
112
|
specification_version: 3
|
112
113
|
summary: elFinder server side connector for Ruby.
|