desviar 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +16 -4
- data/config.ru +3 -6
- data/desviar.gemspec +14 -1
- data/desviar.rb +14 -9
- data/lib/version.rb +3 -3
- metadata +150 -13
- data/Gemfile +0 -10
data/README.md
CHANGED
@@ -19,16 +19,27 @@ troubleshooting, you can store content in a file.
|
|
19
19
|
|
20
20
|
#### Installation ####
|
21
21
|
|
22
|
-
|
22
|
+
##### From github #####
|
23
|
+
Clone this repo, copy _config/config.rb.example_ to config/config.rb, and
|
23
24
|
perform the following:
|
24
25
|
|
25
|
-
sudo apt-get install rack libsqlite3-dev
|
26
|
+
sudo apt-get install rack make libsqlite3-dev
|
26
27
|
# package names above may differ if not using Ubuntu
|
27
28
|
sudo gem install bundler
|
28
29
|
sudo bundle install
|
29
30
|
rackup -p 4567
|
30
31
|
|
31
|
-
Default credential of [app](http://localhost:4567) is user _desviar_, pw _password_.
|
32
|
+
Default credential of [app](http://localhost:4567) is user _desviar_, pw _password_. Consider moving the default database location from /dev/shm/desviar, and set its permissions to 0600.
|
33
|
+
|
34
|
+
##### From rubygems.org #####
|
35
|
+
Invoke the following:
|
36
|
+
|
37
|
+
sudo apt-get install make libsqlite3-dev
|
38
|
+
gem install desviar
|
39
|
+
wget https://raw.github.com/instantlinux/desviar/master/config.ru
|
40
|
+
rackup -p 4567
|
41
|
+
|
42
|
+
You can modify config.ru to direct log output to a different file.
|
32
43
|
|
33
44
|
#### Usage ####
|
34
45
|
|
@@ -37,6 +48,7 @@ Commands:
|
|
37
48
|
* /desviar/xxx - retrieve pre-authenticated content (if a URISUFFIX was specified, it must be appended to xxx)
|
38
49
|
* /list - display a table of most-recently uploaded URIs
|
39
50
|
* /link/nnn - retrieve details
|
51
|
+
* /config - set runtime configuration
|
40
52
|
|
41
53
|
Here's an example of creating a new link via _curl_:
|
42
54
|
|
@@ -56,7 +68,7 @@ Here's an example of creating a new link via _curl_:
|
|
56
68
|
- [x] Encrypted database
|
57
69
|
- [ ] Memcached storage (for performance at scale)
|
58
70
|
- [x] Pre-shared/concealed URI suffix
|
59
|
-
- [
|
71
|
+
- [x] Activity log output (syslog)
|
60
72
|
- [x] Database cleanup tool
|
61
73
|
- [x] Tested under Ruby 1.9.3
|
62
74
|
|
data/config.ru
CHANGED
@@ -1,13 +1,10 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'desviar'
|
2
|
+
|
3
|
+
log = File.new("/tmp/desviar.log", "a+", 0600)
|
3
4
|
$stdout.reopen(log)
|
4
5
|
$stderr.reopen(log)
|
5
6
|
|
6
7
|
run Rack::URLMap.new({
|
7
8
|
"/" => Desviar::Authorized,
|
8
|
-
"/0/config" => Desviar::Authorized,
|
9
|
-
"/0/create" => Desviar::Authorized,
|
10
|
-
"/0/link" => Desviar::Authorized,
|
11
|
-
"/0/list" => Desviar::Authorized,
|
12
9
|
"/desviar" => Desviar::Public
|
13
10
|
})
|
data/desviar.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
|
|
13
13
|
# spec.test_files = spec.files.select{ |path| path =~ /^test\/.*/ }
|
14
14
|
spec.require_paths = ["config", "lib", "public", "views"]
|
15
15
|
spec.files = %x[git ls-files].split.reject do |out|
|
16
|
-
out =~ %r{^\.} || out =~ %r{/^doc/api/}
|
16
|
+
out =~ %r{^\.} || out =~ %r{/^doc/api/} || out =~ %r{^Gemfile}
|
17
17
|
end
|
18
18
|
spec.description = <<-end.gsub /^ /,''
|
19
19
|
Desviar provides URL redirection; some possible applications include:
|
@@ -25,8 +25,21 @@ Gem::Specification.new do |spec|
|
|
25
25
|
#{'-'*78}
|
26
26
|
Desviar v#{spec.version}
|
27
27
|
|
28
|
+
To configure, download from:
|
29
|
+
https://raw.github.com/instantlinux/desviar/master/config/config.rb.example
|
30
|
+
into a new file config.rb and export DESVIAR_CONFIG=<path>/config.rb.
|
31
|
+
|
28
32
|
Thanks for using Desviar.
|
29
33
|
#{'-'*78}
|
30
34
|
end
|
35
|
+
spec.add_dependency "dm-core", ">= 1.2"
|
36
|
+
spec.add_dependency "dm-migrations", ">= 1.2"
|
37
|
+
spec.add_dependency "dm-sqlite-adapter", ">= 1.2"
|
38
|
+
spec.add_dependency "dm-timestamps", ">= 1.2"
|
39
|
+
spec.add_dependency "dm-validations", ">= 1.2"
|
40
|
+
spec.add_dependency "rack-recaptcha", ">= 0.6"
|
41
|
+
spec.add_dependency "rack-test", ">= 0.6"
|
31
42
|
spec.add_dependency "sinatra", ">= 1.4"
|
43
|
+
spec.add_dependency "syntaxi", ">= 0.5"
|
44
|
+
spec.add_dependency "yajl-ruby", ">= 1.1"
|
32
45
|
end
|
data/desviar.rb
CHANGED
@@ -23,12 +23,16 @@ require 'net/http'
|
|
23
23
|
require 'rack/test'
|
24
24
|
require 'rack/recaptcha'
|
25
25
|
|
26
|
-
|
27
|
-
require '
|
28
|
-
|
29
|
-
require '
|
26
|
+
if ENV['DESVIAR_CONFIG']
|
27
|
+
require ENV['DESVIAR_CONFIG']
|
28
|
+
else
|
29
|
+
require File.expand_path '../config/config', __FILE__
|
30
|
+
end
|
31
|
+
require File.expand_path '../lib/version', __FILE__
|
32
|
+
require File.expand_path '../lib/encrypt', __FILE__
|
33
|
+
require File.expand_path '../lib/model', __FILE__
|
30
34
|
# Auth parsing is work-in-progress
|
31
|
-
# require '
|
35
|
+
# require File.expand_path '../lib/auth.rb'', __FILE__
|
32
36
|
|
33
37
|
module Desviar
|
34
38
|
class Authorized < Sinatra::Base
|
@@ -104,11 +108,12 @@ module Desviar
|
|
104
108
|
# TODO: figure out the clean "native" way of DataMapper::Collection.destroy
|
105
109
|
# - but this works fine for small databases
|
106
110
|
@desviar = DataMapper.repository(:default).adapter
|
107
|
-
@records = Desviar::Model::Main.all(:expires_at.lt => DateTime.now
|
108
|
-
|
111
|
+
@records = Desviar::Model::Main.all(:expires_at.lt => DateTime.now,
|
112
|
+
:fields => [ :id ])
|
113
|
+
Desviar::Public::log "debug cleanup found #{@records.length}"
|
114
|
+
count = @records.length
|
109
115
|
@records.each do |item|
|
110
|
-
@desviar.execute("DELETE FROM
|
111
|
-
count += 1
|
116
|
+
@desviar.execute("DELETE FROM desviar_model_mains WHERE id=#{item.id};")
|
112
117
|
end
|
113
118
|
Desviar::Public::log "Cleaned #{count} records" if count != 0
|
114
119
|
redirect "/list"
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: desviar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,120 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: dm-core
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.2'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.2'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: dm-migrations
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '1.2'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '1.2'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: dm-sqlite-adapter
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.2'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.2'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: dm-timestamps
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.2'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.2'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: dm-validations
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '1.2'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '1.2'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rack-recaptcha
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0.6'
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0.6'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rack-test
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.6'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0.6'
|
14
126
|
- !ruby/object:Gem::Dependency
|
15
127
|
name: sinatra
|
16
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -27,6 +139,38 @@ dependencies:
|
|
27
139
|
- - ! '>='
|
28
140
|
- !ruby/object:Gem::Version
|
29
141
|
version: '1.4'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: syntaxi
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0.5'
|
150
|
+
type: :runtime
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0.5'
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: yajl-ruby
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ! '>='
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '1.1'
|
166
|
+
type: :runtime
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '1.1'
|
30
174
|
description: ! 'Desviar provides URL redirection; some possible applications include:
|
31
175
|
|
32
176
|
- Web signup process
|
@@ -42,7 +186,6 @@ extensions: []
|
|
42
186
|
extra_rdoc_files: []
|
43
187
|
files:
|
44
188
|
- Apache-License.txt
|
45
|
-
- Gemfile
|
46
189
|
- README.md
|
47
190
|
- config.ru
|
48
191
|
- config/config.rb.example
|
@@ -63,16 +206,10 @@ files:
|
|
63
206
|
- views/show.erb
|
64
207
|
homepage: http://github.com/instantlinux/desviar
|
65
208
|
licenses: []
|
66
|
-
post_install_message: !
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
Thanks for using Desviar.
|
72
|
-
|
73
|
-
------------------------------------------------------------------------------
|
74
|
-
|
75
|
-
'
|
209
|
+
post_install_message: ! "------------------------------------------------------------------------------\nDesviar
|
210
|
+
v0.0.10\n\nTo configure, download from:\n https://raw.github.com/instantlinux/desviar/master/config/config.rb.example\ninto
|
211
|
+
a new file config.rb and export DESVIAR_CONFIG=<path>/config.rb.\n\nThanks for using
|
212
|
+
Desviar.\n------------------------------------------------------------------------------\n"
|
76
213
|
rdoc_options: []
|
77
214
|
require_paths:
|
78
215
|
- config
|