net_dav 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
data/bin/dav CHANGED
@@ -36,9 +36,21 @@ else
36
36
  url = URI.parse $*[1]
37
37
  end
38
38
 
39
- enable_curl = !ENV['DISABLE_CURL']
39
+ enable_curl = !(ENV['DISABLE_CURL'] && ENV['DISABLE_CURL'] != "0")
40
40
 
41
- res = Net::DAV.start(url, :curl => enable_curl ) { |dav|
41
+ dav = Net::DAV.new(url, :curl => enable_curl)
42
+
43
+ if (url.scheme == 'https')
44
+ dav.verify_callback = lambda do |preverify_ok, x509_store|
45
+ puts "preverify = #{preverify_ok}" if $DEBUG
46
+ puts "cert = #{x509_store.current_cert.inspect}" if $DEBUG
47
+ preverify_ok
48
+ end
49
+
50
+ dav.verify_server = false
51
+ end
52
+
53
+ res = dav.start { |dav|
42
54
  dav.credentials(dav_user, dav_pass) if dav_user
43
55
  case cmd
44
56
  when 'put'
@@ -15,13 +15,23 @@ module Net #:nodoc:
15
15
  class NetHttpHandler
16
16
  attr_writer :user, :pass
17
17
 
18
+ def verify_callback=(callback)
19
+ @http.verify_callback = callback
20
+ end
21
+
22
+ def verify_server=(value)
23
+ @http.verify_mode = value ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE
24
+ end
25
+
18
26
  def initialize(uri)
19
27
  @uri = uri
20
28
  case @uri.scheme
21
29
  when "http"
22
30
  @http = Net::HTTP.new(@uri.host, @uri.port)
23
31
  when "https"
24
- @http = Net::HTTPS.new(@uri.host, @uri.port)
32
+ @http = Net::HTTP.new(@uri.host, @uri.port)
33
+ @http.use_ssl = true
34
+ self.verify_server = true
25
35
  else
26
36
  raise "unknown uri scheme"
27
37
  end
@@ -158,6 +168,19 @@ module Net #:nodoc:
158
168
 
159
169
 
160
170
  class CurlHandler < NetHttpHandler
171
+ def verify_callback=(callback)
172
+ super
173
+ curl = make_curl
174
+ $stderr.puts "verify_callback not implemented in Curl::Easy"
175
+ end
176
+
177
+ def verify_server=(value)
178
+ super
179
+ curl = make_curl
180
+ curl.ssl_verify_peer = value
181
+ curl.ssl_verify_host = value
182
+ end
183
+
161
184
  def make_curl
162
185
  unless @curl
163
186
  @curl = Curl::Easy.new
@@ -357,5 +380,13 @@ module Net #:nodoc:
357
380
  res.body
358
381
  end
359
382
 
383
+ def verify_callback=(callback)
384
+ @handler.verify_callback = callback
385
+ end
386
+
387
+ def verify_server=(value)
388
+ @handler.verify_server = value
389
+ end
390
+
360
391
  end
361
392
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{net_dav}
8
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Miron Cuperman"]
12
- s.date = %q{2009-10-31}
12
+ s.date = %q{2009-11-01}
13
13
  s.default_executable = %q{dav}
14
14
  s.description = %q{WebDAV client library in the style of Net::HTTP}
15
15
  s.email = %q{c1.github@niftybox.net}
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
29
29
  "lib/net/dav.rb",
30
30
  "lib/net/dav/item.rb",
31
31
  "net_dav.gemspec",
32
+ "script/multi-test",
32
33
  "spec/net_dav_spec.rb",
33
34
  "spec/spec.opts",
34
35
  "spec/spec_helper.rb",
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'zlib'
4
+ require 'uri'
5
+ require 'rubygems'
6
+ require 'net/dav'
7
+
8
+ url = URI.parse $*[0]
9
+
10
+ items = []
11
+ reps = 10
12
+ nthreads = 10
13
+ use_curl = true
14
+ use_curl = false if ENV['DISABLE_CURL']
15
+
16
+ Net::DAV.start(url, :curl => use_curl) do |dav|
17
+ dav.find(url.path) do |item|
18
+ items << item
19
+ end
20
+ end
21
+
22
+ curindex = 0
23
+ nitems = items.size / nthreads + 1
24
+ nitems = 1 if nitems < 1
25
+ threads = []
26
+ (1..nthreads).each do |tind|
27
+ next if curindex >= items.size
28
+ titems = items[curindex, nitems]
29
+ curindex += nitems
30
+ threads << Thread.new(tind, titems) do |tind, titems|
31
+ Net::DAV.start(url, :curl => use_curl) do |dav|
32
+ Thread.current.abort_on_exception = true
33
+ crcs = {}
34
+ (1..reps).each do
35
+ titems.each do |item|
36
+ total_size = 0
37
+ crc = 0
38
+ dav.get(item.uri.path) do |str|
39
+ #puts "get #{item.uri} #{total_size}"
40
+ total_size += str.length
41
+ crc = Zlib.crc32(str, crc)
42
+ end
43
+ puts "[#{tind}] new crc for #{item.uri}" if (crcs[item.uri].nil?)
44
+ crcs[item.uri] = crc if (crcs[item.uri].nil?)
45
+ raise "crc mismatch #{item} #{crc} #{crcs[item.uri]}" if (crc != crcs[item.uri])
46
+ raise "size mismatch #{item} #{item.size} #{total_size}" if (total_size != item.size)
47
+ puts "[#{tind}] good #{item.uri} #{item.size} #{crc}"
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ threads.each { |thread| thread.join }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net_dav
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miron Cuperman
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-31 00:00:00 -07:00
12
+ date: 2009-11-01 00:00:00 -07:00
13
13
  default_executable: dav
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -52,6 +52,7 @@ files:
52
52
  - lib/net/dav.rb
53
53
  - lib/net/dav/item.rb
54
54
  - net_dav.gemspec
55
+ - script/multi-test
55
56
  - spec/net_dav_spec.rb
56
57
  - spec/spec.opts
57
58
  - spec/spec_helper.rb