druzy-server 1.0.0 → 2.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9ec849c3ea471cc472e4cfb3a8d7f1bf0a83662f
4
- data.tar.gz: 552d7cdee6e49bc132a365b1a587b5354c4c3e5a
3
+ metadata.gz: ba37955cbc026750b06e411f2c1a68c1b7994f78
4
+ data.tar.gz: 913dc72ba12214063268340886d7f0e9d87b1625
5
5
  SHA512:
6
- metadata.gz: 2d267385056806cd681ba9a05eb7a801f77f234b6dfcfeaf83cb0005a2921e60800c92c877dc6a38fd74440543d9e6c6f89e7bf4cf3444523fcd9ca8ca2955cf
7
- data.tar.gz: 2b3a4e15c1b10b5e0e374b4d3d099a6d29d0af8515df21c7057ad9de06b155bc1c1cdef89625a7591a3e77c3fd251f74bf61c3ec3003e7ab3825a31c40d92375
6
+ metadata.gz: eeaec2a5f6e9812fb6ae3ad14fcbadfe0c3e96bc637461f3223598865cacfe41285ee9aa91054ebc5f15eefc3803f0fdb4205729bffa3f045e1ac378241d2350
7
+ data.tar.gz: 6815e298d064ad65db6b903b5e2838d921da2e8fbf1b7f01059a17323231f842b3bb39d75f9f738bbb93c318e9384cf9878993ac3b80602b8390458f74261487
@@ -0,0 +1,33 @@
1
+ require 'webrick'
2
+
3
+ module Druzy
4
+ module Server
5
+ class OneInstanceByPort
6
+ @@instances={}
7
+
8
+ def initialize(port)
9
+ @server=WEBrick::HTTPServer.new(:Port => port)
10
+ end
11
+
12
+ def self.instance(port)
13
+ if !@@instances.has_key?(port)
14
+ @@instances[port]=new(port)
15
+ end
16
+ @@instances[port]
17
+ end
18
+
19
+ def start_server
20
+ Thread.new{@server.start()}
21
+ end
22
+
23
+ def stop_server
24
+ @server.stop
25
+ end
26
+
27
+ private_class_method :new
28
+ private :start_server, :stop_server
29
+
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,58 @@
1
+ require_relative 'one_instance_by_port'
2
+
3
+ require 'druzy/utils/net'
4
+ require 'i18n'
5
+ require 'socket'
6
+ require 'webrick'
7
+
8
+ I18n.enforce_available_locales = false
9
+
10
+ module Druzy
11
+ module Server
12
+ class RestrictedFileServer < OneInstanceByPort
13
+
14
+ def initialize(port)
15
+ super(port)
16
+
17
+ @files={}
18
+ @id=0
19
+ end
20
+
21
+ def add_file(file)
22
+ @files[file]=@id
23
+ @server.mount("/"+@id.to_s+"/"+I18n.transliterate(File.basename(file)),WEBrick::HTTPServlet::FileHandler,file)
24
+ @id+=1
25
+
26
+ if @files.size == 1
27
+ start_server
28
+ end
29
+ end
30
+
31
+ def remove_file(file)
32
+ @files.delete(file)
33
+ if @files.size == 0
34
+ stop_server
35
+ end
36
+ end
37
+
38
+ def get_address(file)
39
+ if @files.include?(file)
40
+ ip=Druzy::Utils.get_local_public_ipv4
41
+ return "http://"+ip+":"+@server.config[:Port].to_s+"/"+@files[file].to_s+"/"+I18n.transliterate(File.basename(file))
42
+ else
43
+ return nil
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+ end
52
+
53
+ if $0 == __FILE__
54
+ server=Druzy::Server::RestrictedFileServer.instance(15433)
55
+ server.add_file("/home/druzy/elliot.mp4")
56
+ puts server.get_address("/home/druzy/elliot.mp4")
57
+ sleep 30
58
+ end
@@ -1,5 +1,5 @@
1
1
  module Druzy
2
2
  module Server
3
- VERSION = "1.0.0"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
data/lib/druzy/server.rb CHANGED
@@ -1,68 +1,2 @@
1
- require 'druzy/server/version'
2
-
3
- require 'i18n'
4
- require 'socket'
5
- require 'webrick'
6
-
7
- I18n.enforce_available_locales = false
8
-
9
- module Druzy
10
- module Server
11
- class RestrictedFileServer
12
- @@instances={}
13
-
14
- def initialize(port)
15
- @server=WEBrick::HTTPServer.new(:Port => port)
16
- @files={}
17
- @id=0
18
- end
19
-
20
- def self.instance(port)
21
- if !@@instances.has_key?(port)
22
- @@instances[port]=new(port)
23
- end
24
- @@instances[port]
25
- end
26
-
27
- def add_file(file)
28
- @files[file]=@id
29
- @server.mount("/"+@id.to_s+"/"+I18n.transliterate(File.basename(file)),WEBrick::HTTPServlet::FileHandler,file)
30
- @id+=1
31
-
32
- if @files.size == 1
33
- start_server
34
- end
35
- end
36
-
37
- def remove_file(file)
38
- @files.delete(file)
39
- if @files.size == 0
40
- stop_server
41
- end
42
- end
43
-
44
- def get_address(file)
45
- if @files.include?(file)
46
- ip=Socket.ip_address_list.detect{|intf| intf.ipv4? and !intf.ipv4_loopback? and !intf.ipv4_multicast?}
47
- return "http://"+ip.ip_address+":"+@server.config[:Port].to_s+"/"+@files[file].to_s+"/"+I18n.transliterate(File.basename(file))
48
- else
49
- return nil
50
- end
51
-
52
- end
53
-
54
- def start_server
55
- Thread.new{@server.start()}
56
- end
57
-
58
- def stop_server
59
- @server.stop
60
- end
61
-
62
- private_class_method :new
63
- private :start_server, :stop_server
64
-
65
- end
66
-
67
- end
68
- end
1
+ require_relative 'server/version'
2
+ require_relative 'server/restricted_file_server'
metadata CHANGED
@@ -1,43 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: druzy-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Le Greneur
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-19 00:00:00.000000000 Z
11
+ date: 2016-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: druzy-utils
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: i18n
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - "~>"
31
+ - - ">="
18
32
  - !ruby/object:Gem::Version
19
- version: '0'
33
+ version: 0.7.0
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
- - - "~>"
38
+ - - ">="
25
39
  - !ruby/object:Gem::Version
26
- version: '0'
40
+ version: 0.7.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '1.10'
47
+ version: '1.11'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '1.10'
54
+ version: '1.11'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -60,6 +74,8 @@ extensions: []
60
74
  extra_rdoc_files: []
61
75
  files:
62
76
  - lib/druzy/server.rb
77
+ - lib/druzy/server/one_instance_by_port.rb
78
+ - lib/druzy/server/restricted_file_server.rb
63
79
  - lib/druzy/server/version.rb
64
80
  homepage: https://github.com/druzy/ruby-druzy-server
65
81
  licenses:
@@ -81,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
97
  version: '0'
82
98
  requirements: []
83
99
  rubyforge_project:
84
- rubygems_version: 2.2.2
100
+ rubygems_version: 2.5.1
85
101
  signing_key:
86
102
  specification_version: 4
87
103
  summary: A very restrictive http server