desviar 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (7) hide show
  1. data/README.md +16 -4
  2. data/config.ru +3 -6
  3. data/desviar.gemspec +14 -1
  4. data/desviar.rb +14 -9
  5. data/lib/version.rb +3 -3
  6. metadata +150 -13
  7. 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
- Clone this repo, copy config/config.rb.example to config/config.rb, and
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
- - [ ] Activity log output (syslog)
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 File.expand_path '../desviar.rb', __FILE__
2
- log = File.new("desviar.log", "a+")
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
- require './config/config'
27
- require './lib/version'
28
- require './lib/encrypt'
29
- require './lib/model'
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 './lib/auth.rb'
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
- count = 0
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 desviar_data WHERE id=#{item.id};")
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
@@ -1,7 +1,7 @@
1
1
  module Desviar
2
- VERSION = "0.0.9"
3
- RELEASE = "2013-07-28"
4
- TIMESTAMP = "2013-07-28 22:49:26 -07:00"
2
+ VERSION = "0.0.10"
3
+ RELEASE = "2013-07-29"
4
+ TIMESTAMP = "2013-07-29 10:58:21 -07:00"
5
5
 
6
6
  def self.info
7
7
  "#{name} v#{VERSION} (#{RELEASE})"
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.9
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-28 00:00:00.000000000 Z
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
- Desviar v0.0.9
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
data/Gemfile DELETED
@@ -1,10 +0,0 @@
1
- source 'https://rubygems.org'
2
- ruby '1.9.3'
3
-
4
- gem 'sinatra'
5
- gem 'dm-core'
6
- gem 'dm-migrations'
7
- gem 'dm-validations'
8
- gem 'dm-timestamps'
9
- gem 'syntaxi'
10
- gem 'rack-recaptcha'