el_finder 1.0.18 → 1.0.19
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|