servedir 0.2 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/COPYING +121 -0
  2. data/README.md +12 -5
  3. data/bin/servedir +21 -3
  4. metadata +8 -8
  5. data/UNLICENSE +0 -24
data/COPYING ADDED
@@ -0,0 +1,121 @@
1
+ Creative Commons Legal Code
2
+
3
+ CC0 1.0 Universal
4
+
5
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
6
+ LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
7
+ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
8
+ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
9
+ REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
10
+ PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
11
+ THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
12
+ HEREUNDER.
13
+
14
+ Statement of Purpose
15
+
16
+ The laws of most jurisdictions throughout the world automatically confer
17
+ exclusive Copyright and Related Rights (defined below) upon the creator
18
+ and subsequent owner(s) (each and all, an "owner") of an original work of
19
+ authorship and/or a database (each, a "Work").
20
+
21
+ Certain owners wish to permanently relinquish those rights to a Work for
22
+ the purpose of contributing to a commons of creative, cultural and
23
+ scientific works ("Commons") that the public can reliably and without fear
24
+ of later claims of infringement build upon, modify, incorporate in other
25
+ works, reuse and redistribute as freely as possible in any form whatsoever
26
+ and for any purposes, including without limitation commercial purposes.
27
+ These owners may contribute to the Commons to promote the ideal of a free
28
+ culture and the further production of creative, cultural and scientific
29
+ works, or to gain reputation or greater distribution for their Work in
30
+ part through the use and efforts of others.
31
+
32
+ For these and/or other purposes and motivations, and without any
33
+ expectation of additional consideration or compensation, the person
34
+ associating CC0 with a Work (the "Affirmer"), to the extent that he or she
35
+ is an owner of Copyright and Related Rights in the Work, voluntarily
36
+ elects to apply CC0 to the Work and publicly distribute the Work under its
37
+ terms, with knowledge of his or her Copyright and Related Rights in the
38
+ Work and the meaning and intended legal effect of CC0 on those rights.
39
+
40
+ 1. Copyright and Related Rights. A Work made available under CC0 may be
41
+ protected by copyright and related or neighboring rights ("Copyright and
42
+ Related Rights"). Copyright and Related Rights include, but are not
43
+ limited to, the following:
44
+
45
+ i. the right to reproduce, adapt, distribute, perform, display,
46
+ communicate, and translate a Work;
47
+ ii. moral rights retained by the original author(s) and/or performer(s);
48
+ iii. publicity and privacy rights pertaining to a person's image or
49
+ likeness depicted in a Work;
50
+ iv. rights protecting against unfair competition in regards to a Work,
51
+ subject to the limitations in paragraph 4(a), below;
52
+ v. rights protecting the extraction, dissemination, use and reuse of data
53
+ in a Work;
54
+ vi. database rights (such as those arising under Directive 96/9/EC of the
55
+ European Parliament and of the Council of 11 March 1996 on the legal
56
+ protection of databases, and under any national implementation
57
+ thereof, including any amended or successor version of such
58
+ directive); and
59
+ vii. other similar, equivalent or corresponding rights throughout the
60
+ world based on applicable law or treaty, and any national
61
+ implementations thereof.
62
+
63
+ 2. Waiver. To the greatest extent permitted by, but not in contravention
64
+ of, applicable law, Affirmer hereby overtly, fully, permanently,
65
+ irrevocably and unconditionally waives, abandons, and surrenders all of
66
+ Affirmer's Copyright and Related Rights and associated claims and causes
67
+ of action, whether now known or unknown (including existing as well as
68
+ future claims and causes of action), in the Work (i) in all territories
69
+ worldwide, (ii) for the maximum duration provided by applicable law or
70
+ treaty (including future time extensions), (iii) in any current or future
71
+ medium and for any number of copies, and (iv) for any purpose whatsoever,
72
+ including without limitation commercial, advertising or promotional
73
+ purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
74
+ member of the public at large and to the detriment of Affirmer's heirs and
75
+ successors, fully intending that such Waiver shall not be subject to
76
+ revocation, rescission, cancellation, termination, or any other legal or
77
+ equitable action to disrupt the quiet enjoyment of the Work by the public
78
+ as contemplated by Affirmer's express Statement of Purpose.
79
+
80
+ 3. Public License Fallback. Should any part of the Waiver for any reason
81
+ be judged legally invalid or ineffective under applicable law, then the
82
+ Waiver shall be preserved to the maximum extent permitted taking into
83
+ account Affirmer's express Statement of Purpose. In addition, to the
84
+ extent the Waiver is so judged Affirmer hereby grants to each affected
85
+ person a royalty-free, non transferable, non sublicensable, non exclusive,
86
+ irrevocable and unconditional license to exercise Affirmer's Copyright and
87
+ Related Rights in the Work (i) in all territories worldwide, (ii) for the
88
+ maximum duration provided by applicable law or treaty (including future
89
+ time extensions), (iii) in any current or future medium and for any number
90
+ of copies, and (iv) for any purpose whatsoever, including without
91
+ limitation commercial, advertising or promotional purposes (the
92
+ "License"). The License shall be deemed effective as of the date CC0 was
93
+ applied by Affirmer to the Work. Should any part of the License for any
94
+ reason be judged legally invalid or ineffective under applicable law, such
95
+ partial invalidity or ineffectiveness shall not invalidate the remainder
96
+ of the License, and in such case Affirmer hereby affirms that he or she
97
+ will not (i) exercise any of his or her remaining Copyright and Related
98
+ Rights in the Work or (ii) assert any associated claims and causes of
99
+ action with respect to the Work, in either case contrary to Affirmer's
100
+ express Statement of Purpose.
101
+
102
+ 4. Limitations and Disclaimers.
103
+
104
+ a. No trademark or patent rights held by Affirmer are waived, abandoned,
105
+ surrendered, licensed or otherwise affected by this document.
106
+ b. Affirmer offers the Work as-is and makes no representations or
107
+ warranties of any kind concerning the Work, express, implied,
108
+ statutory or otherwise, including without limitation warranties of
109
+ title, merchantability, fitness for a particular purpose, non
110
+ infringement, or the absence of latent or other defects, accuracy, or
111
+ the present or absence of errors, whether or not discoverable, all to
112
+ the greatest extent permissible under applicable law.
113
+ c. Affirmer disclaims responsibility for clearing rights of other persons
114
+ that may apply to the Work or any use thereof, including without
115
+ limitation any person's Copyright and Related Rights in the Work.
116
+ Further, Affirmer disclaims responsibility for obtaining any necessary
117
+ consents, permissions or other rights required for any use of the
118
+ Work.
119
+ d. Affirmer understands and acknowledges that Creative Commons is not a
120
+ party to this document and has no duty or obligation with respect to
121
+ this CC0 or use of the Work.
data/README.md CHANGED
@@ -14,7 +14,7 @@ to be already configured in the proper way.
14
14
  Installation
15
15
  ------------
16
16
 
17
- `servedir` do not require installation, it is a single standalone executable
17
+ `servedir` does not require installation, it is a single standalone executable
18
18
  script.
19
19
 
20
20
  However, if desired, it is possible to install `servedir` via RubyGems:
@@ -25,12 +25,18 @@ However, if desired, it is possible to install `servedir` via RubyGems:
25
25
  Usage
26
26
  -----
27
27
 
28
+ Launch `servedir` specifying the directory to be served and the port to be
29
+ used.
30
+
28
31
  On the box behind NAT:
29
32
 
30
- $ servedir ~/Public 13428
33
+ $ servedir ~/Public/ 13428
31
34
 
35
+ Discovering addresses and hostnames...
32
36
  Server starting... (CTRL-C to terminate)
37
+
33
38
  local address: <http://localhost:13428/>
39
+ LAN address: <http://fancy-box.local:13428/>
34
40
  public address: <http://84.136.123.62:13428/>
35
41
 
36
42
  [2012-02-11 13:24:01] INFO WEBrick 1.3.1
@@ -61,7 +67,7 @@ Private files
61
67
  -------------
62
68
 
63
69
  It is possible to block access to private files and also hide them from the
64
- directory listing. The list of private files must resides a file named
70
+ directory listing. The list of private files must resides in a file named
65
71
  `.private` in the served directory; each line must be either a file name or a
66
72
  glob pattern.
67
73
 
@@ -84,6 +90,7 @@ do not abuse their service.
84
90
  License
85
91
  -------
86
92
 
87
- This is free and unencumbered software released into the public domain.
88
- See the `UNLICENSE` file or <http://unlicense.org/> for more details.
93
+ This is free software released into the public domain (CC0 license).
89
94
 
95
+ See the `COPYING` file or <http://creativecommons.org/publicdomain/zero/1.0/>
96
+ for more details.
@@ -4,11 +4,15 @@
4
4
  # See the `UNLICENSE` file or <http://unlicense.org/> for more details.
5
5
 
6
6
  require 'open-uri'
7
+ require 'socket'
8
+ require 'timeout'
7
9
  require 'webrick'
8
10
 
9
11
  IP_DISCO_SERVICE = 'http://automation.whatismyip.com/n09230945.asp'
12
+ LAN_IP = '169.254.0.1'
10
13
  PRIVATE_LIST_FILE = '.private'
11
14
  MAX_PORT = 2**16
15
+ MAX_DISCOVER_WAIT = 4 # seconds
12
16
 
13
17
  def check_args(dir, port)
14
18
  if !File.directory?(File.expand_path(dir))
@@ -22,18 +26,32 @@ def check_args(dir, port)
22
26
  end
23
27
 
24
28
  def print_addresses(dir, port)
29
+ puts "Discovering addresses and hostnames..."
30
+
25
31
  begin
26
- ip = open(IP_DISCO_SERVICE).read
27
- rescue Errno::ENETUNREACH => err
32
+ ip = Timeout::timeout(MAX_DISCOVER_WAIT) do
33
+ open(IP_DISCO_SERVICE).read
34
+ end
35
+ rescue
28
36
  puts "WARNING: Cannot reach IP discovery service"
29
37
  ip = "NOT_AVAILABLE"
30
38
  end
31
39
 
40
+ begin
41
+ lan_ip = UDPSocket.open { |s| s.connect(LAN_IP, 1); s.addr[2] }
42
+ rescue
43
+ puts "WARNING: Cannot find LAN-local hostname"
44
+ lan_ip = "NOT_AVAILABLE"
45
+ end
46
+
32
47
  local_uri = "http://localhost:#{port}/"
48
+ lan_uri = "http://#{lan_ip}:#{port}/"
33
49
  remote_uri = "http://#{ip}:#{port}/"
34
50
 
35
51
  puts "Server starting... (CTRL-C to terminate)"
52
+ puts
36
53
  puts " local address: <#{local_uri}>"
54
+ puts " LAN address: <#{lan_uri}>"
37
55
  puts " public address: <#{remote_uri}>"
38
56
  puts
39
57
  end
@@ -48,7 +66,7 @@ def start_server(dir, port)
48
66
  private_list_file = File.join(dir, PRIVATE_LIST_FILE)
49
67
  if File.exist?(private_list_file)
50
68
  patterns = File.readlines(private_list_file).map(&:strip)
51
- ignored_files = patterns
69
+ ignored_files = patterns.reject(&:empty?).reject { |f| f.start_with?('#') }
52
70
  ignored_files << PRIVATE_LIST_FILE
53
71
  config[:DocumentRootOptions][:NondisclosureName] = ignored_files
54
72
  end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: servedir
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
9
- version: "0.2"
8
+ - 4
9
+ version: "0.4"
10
10
  platform: ruby
11
11
  authors:
12
12
  - Gioele Barabucci
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2012-02-11 00:00:00 Z
17
+ date: 2012-08-23 00:00:00 Z
18
18
  dependencies: []
19
19
 
20
20
  description:
@@ -29,10 +29,10 @@ extra_rdoc_files: []
29
29
  files:
30
30
  - bin/servedir
31
31
  - README.md
32
- - UNLICENSE
33
- homepage: http://github.com/gioele/servedir
32
+ - COPYING
33
+ homepage: https://github.com/gioele/servedir
34
34
  licenses:
35
- - UNLICENSE
35
+ - COPYING
36
36
  post_install_message:
37
37
  rdoc_options: []
38
38
 
@@ -59,7 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
59
  requirements: []
60
60
 
61
61
  rubyforge_project:
62
- rubygems_version: 1.8.16
62
+ rubygems_version: 1.8.24
63
63
  signing_key:
64
64
  specification_version: 3
65
65
  summary: serve a directory over HTTP from behind NAT
data/UNLICENSE DELETED
@@ -1,24 +0,0 @@
1
- This is free and unencumbered software released into the public domain.
2
-
3
- Anyone is free to copy, modify, publish, use, compile, sell, or
4
- distribute this software, either in source code form or as a compiled
5
- binary, for any purpose, commercial or non-commercial, and by any
6
- means.
7
-
8
- In jurisdictions that recognize copyright laws, the author or authors
9
- of this software dedicate any and all copyright interest in the
10
- software to the public domain. We make this dedication for the benefit
11
- of the public at large and to the detriment of our heirs and
12
- successors. We intend this dedication to be an overt act of
13
- relinquishment in perpetuity of all present and future rights to this
14
- software under copyright law.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
- IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20
- OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
- OTHER DEALINGS IN THE SOFTWARE.
23
-
24
- For more information, please refer to <http://unlicense.org/>