distributer 3.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 +7 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +31 -0
- data/README.md +41 -0
- data/Rakefile +1 -0
- data/bin/distributer +22 -0
- data/distributer.gemspec +23 -0
- data/lib/Distributer.rb +20 -0
- data/lib/distributer/application/app.rb +83 -0
- data/lib/distributer/application/views/index.erb +25 -0
- data/lib/distributer/version.rb +3 -0
- metadata +96 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 07cd2a0fc0f52ce28594180b19b99845a9ee8fba
|
|
4
|
+
data.tar.gz: 91b88a7582fd5ddf6df7f0812bfe0b0627e0de0a
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: a7371c91a7f1708357e83324453d588f7de65c686c421a2d9dac2ab6535331e20720c89c0e9484e6d1f0ceedcb90617cf4af4ef4e471de923cbfaa6c229eb005
|
|
7
|
+
data.tar.gz: c9cedd290c0d1457a819fb307b852b1379de0147050ee4336f01d88123d09c851a8bf7c931ee292dcd210c600a2acba973f0c3e471851c71d1bf2cdb93ad90aa
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
distributer (1.0.5)
|
|
5
|
+
methadone
|
|
6
|
+
shotgun
|
|
7
|
+
sinatra
|
|
8
|
+
|
|
9
|
+
GEM
|
|
10
|
+
remote: https://rubygems.org/
|
|
11
|
+
specs:
|
|
12
|
+
methadone (1.2.3)
|
|
13
|
+
bundler
|
|
14
|
+
rack (1.5.2)
|
|
15
|
+
rack-protection (1.3.2)
|
|
16
|
+
rack
|
|
17
|
+
rake (10.0.3)
|
|
18
|
+
shotgun (0.9)
|
|
19
|
+
rack (>= 1.0)
|
|
20
|
+
sinatra (1.3.4)
|
|
21
|
+
rack (~> 1.4)
|
|
22
|
+
rack-protection (~> 1.3)
|
|
23
|
+
tilt (~> 1.3, >= 1.3.3)
|
|
24
|
+
tilt (1.3.3)
|
|
25
|
+
|
|
26
|
+
PLATFORMS
|
|
27
|
+
ruby
|
|
28
|
+
|
|
29
|
+
DEPENDENCIES
|
|
30
|
+
distributer!
|
|
31
|
+
rake
|
data/README.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Distributer
|
|
2
|
+
|
|
3
|
+
Version 2.0.0 is now the official most current version. Now using mongrel to serve file so large files do not crash your system when serving.
|
|
4
|
+
|
|
5
|
+
Anytime you want to share a few files just go to the directory you want to share.
|
|
6
|
+
Then type 'distributer'
|
|
7
|
+
or you can type 'distributer /path/to/directory'
|
|
8
|
+
|
|
9
|
+
You will be able to see what is going on from the server output in your terminal.
|
|
10
|
+
|
|
11
|
+
Location including port and ip is shown at start up of server.
|
|
12
|
+
|
|
13
|
+
Later versions will include an option for port number but right now I am super tired tonight and calling it good enough for now. Maybe this weekend Ill add it..
|
|
14
|
+
|
|
15
|
+
Also its at 3.0.0 because rubygems still thinks the old crap is there even after I gem yank and Im tired so I just made it 3.0.0 to get it out and me in bed.
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
Add this line to your application's Gemfile:
|
|
20
|
+
|
|
21
|
+
gem 'distributer'
|
|
22
|
+
|
|
23
|
+
And then execute:
|
|
24
|
+
|
|
25
|
+
$ bundle install
|
|
26
|
+
|
|
27
|
+
Or install it yourself as:
|
|
28
|
+
|
|
29
|
+
$ gem install distributer
|
|
30
|
+
|
|
31
|
+
## Usage
|
|
32
|
+
|
|
33
|
+
Usage: distributer or distributer directory
|
|
34
|
+
|
|
35
|
+
## Contributing
|
|
36
|
+
|
|
37
|
+
1. Fork it
|
|
38
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
39
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
40
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
|
41
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/distributer
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'optparse'
|
|
4
|
+
require 'methadone'
|
|
5
|
+
require 'distributer'
|
|
6
|
+
|
|
7
|
+
include Methadone::Main
|
|
8
|
+
include Methadone::CLILogging
|
|
9
|
+
|
|
10
|
+
main do |config|
|
|
11
|
+
if config.nil?
|
|
12
|
+
Distributer.serve(Dir.pwd)
|
|
13
|
+
else
|
|
14
|
+
Distributer.serve(config)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
description 'A tool for quickly distributing files from a directory over a network'
|
|
19
|
+
|
|
20
|
+
arg :directory, :optional
|
|
21
|
+
|
|
22
|
+
go!
|
data/distributer.gemspec
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'distributer/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |gem|
|
|
7
|
+
gem.name = "distributer"
|
|
8
|
+
gem.version = Distributer::VERSION
|
|
9
|
+
gem.authors = ["tylerjones"]
|
|
10
|
+
gem.email = ["tyhampjone@gmail.com"]
|
|
11
|
+
gem.description = %q{Allows files to be distributed from a directory via HTTP.}
|
|
12
|
+
gem.summary = %q{Uses either the specified directory or the current directory.}
|
|
13
|
+
gem.homepage = "https://github.com/tylerhjones/distributer"
|
|
14
|
+
|
|
15
|
+
gem.add_dependency "sinatra"
|
|
16
|
+
gem.add_dependency "methadone"
|
|
17
|
+
gem.add_dependency "mongrel"
|
|
18
|
+
|
|
19
|
+
gem.files = `git ls-files`.split($/)
|
|
20
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
|
21
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
22
|
+
gem.require_paths = ["lib"]
|
|
23
|
+
end
|
data/lib/Distributer.rb
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# require "distributer/app.rb"
|
|
2
|
+
# require "distributer/config.ru"
|
|
3
|
+
require 'socket'
|
|
4
|
+
|
|
5
|
+
module Distributer
|
|
6
|
+
extend self
|
|
7
|
+
|
|
8
|
+
def serve(directory)
|
|
9
|
+
if directory.end_with?("/")
|
|
10
|
+
$directory = directory
|
|
11
|
+
else
|
|
12
|
+
$directory = directory + "/"
|
|
13
|
+
end
|
|
14
|
+
$ip = IPSocket.getaddress(Socket.gethostname)
|
|
15
|
+
puts "Directory \"#{directory}\" Files being served at : http://" + $ip + ":9393"
|
|
16
|
+
|
|
17
|
+
require 'distributer/application/app.rb'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require "sinatra"
|
|
2
|
+
require "pathname"
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class DistributerSinatra < Sinatra::Base
|
|
6
|
+
|
|
7
|
+
set :static, true # set up static file routing
|
|
8
|
+
|
|
9
|
+
set :server, 'mongrel'
|
|
10
|
+
|
|
11
|
+
set :port, '9393'
|
|
12
|
+
set :host, $ip
|
|
13
|
+
|
|
14
|
+
helpers do
|
|
15
|
+
FileName = Struct.new(:name, :directory)
|
|
16
|
+
|
|
17
|
+
def get_files(public_dir)
|
|
18
|
+
puts "SERVING LIST OF : " + public_dir
|
|
19
|
+
pn = Pathname.new(public_dir).children()
|
|
20
|
+
array_of_things = Array.new
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
pn.each do |name|
|
|
24
|
+
# two subs to remove / at the front of a specified directory
|
|
25
|
+
short_name = name.sub(/#{$directory}/,"").sub(/^\//,"")
|
|
26
|
+
array_of_things.push(FileName.new(short_name, name.directory?))
|
|
27
|
+
end
|
|
28
|
+
@arr = array_of_things
|
|
29
|
+
erb :index
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def give_file(file_path)
|
|
33
|
+
file_path.sub!(/\/\//,"\/")
|
|
34
|
+
puts "REQUESTED FILE_PATH : " + file_path
|
|
35
|
+
if File.exists? file_path
|
|
36
|
+
if File.directory? file_path
|
|
37
|
+
puts "FILE IS A DIRECTORY"
|
|
38
|
+
return get_files(file_path)
|
|
39
|
+
else
|
|
40
|
+
puts "RETURNING FILE : " + file_path
|
|
41
|
+
send_file(file_path, :disposition => 'attachment', :filename => File.basename(file_path))
|
|
42
|
+
end
|
|
43
|
+
else
|
|
44
|
+
return "File does not exist."
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
get "/" do
|
|
51
|
+
get_files($directory)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
get '/*' do
|
|
55
|
+
if request.path_info.include? ".."
|
|
56
|
+
return " The .. is not allowed"
|
|
57
|
+
else
|
|
58
|
+
give_file($directory + request.path_info)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
DistributerSinatra.run!
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<title>Tyler Jones Blog</title>
|
|
5
|
+
</head>
|
|
6
|
+
<body>
|
|
7
|
+
|
|
8
|
+
<h2>File List</h2>
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
<% @arr.each do |file| %>
|
|
12
|
+
<% if file.directory %>
|
|
13
|
+
<span class="info-directory">Directory</span>
|
|
14
|
+
<a href="/<%=file.name%>">
|
|
15
|
+
<%=file.name %>
|
|
16
|
+
</a>
|
|
17
|
+
<br/>
|
|
18
|
+
<% else %>
|
|
19
|
+
<span class="info-file">File</span>
|
|
20
|
+
<a href="/<%=file.name%>">
|
|
21
|
+
<%=file.name %>
|
|
22
|
+
</a>
|
|
23
|
+
<br/>
|
|
24
|
+
<% end %>
|
|
25
|
+
<% end %>
|
metadata
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: distributer
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 3.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- tylerjones
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2013-03-15 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: sinatra
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - '>='
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - '>='
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: methadone
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - '>='
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - '>='
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: mongrel
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - '>='
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
description: Allows files to be distributed from a directory via HTTP.
|
|
56
|
+
email:
|
|
57
|
+
- tyhampjone@gmail.com
|
|
58
|
+
executables:
|
|
59
|
+
- distributer
|
|
60
|
+
extensions: []
|
|
61
|
+
extra_rdoc_files: []
|
|
62
|
+
files:
|
|
63
|
+
- Gemfile
|
|
64
|
+
- Gemfile.lock
|
|
65
|
+
- README.md
|
|
66
|
+
- Rakefile
|
|
67
|
+
- bin/distributer
|
|
68
|
+
- distributer.gemspec
|
|
69
|
+
- lib/Distributer.rb
|
|
70
|
+
- lib/distributer/application/app.rb
|
|
71
|
+
- lib/distributer/application/views/index.erb
|
|
72
|
+
- lib/distributer/version.rb
|
|
73
|
+
homepage: https://github.com/tylerhjones/distributer
|
|
74
|
+
licenses: []
|
|
75
|
+
metadata: {}
|
|
76
|
+
post_install_message:
|
|
77
|
+
rdoc_options: []
|
|
78
|
+
require_paths:
|
|
79
|
+
- lib
|
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
81
|
+
requirements:
|
|
82
|
+
- - '>='
|
|
83
|
+
- !ruby/object:Gem::Version
|
|
84
|
+
version: '0'
|
|
85
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - '>='
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
requirements: []
|
|
91
|
+
rubyforge_project:
|
|
92
|
+
rubygems_version: 2.0.0
|
|
93
|
+
signing_key:
|
|
94
|
+
specification_version: 4
|
|
95
|
+
summary: Uses either the specified directory or the current directory.
|
|
96
|
+
test_files: []
|