druzy-server 1.0.0 → 2.0.0

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