sras 2.1.4 → 2.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,15 @@
1
+ 2.1.5
2
+ - escape asset name and description. previously assets with
3
+ certain values in the name and/or description fields would
4
+ trigger exceptions in OpenSim.
5
+ - when starting sras in background print a message instead of
6
+ being silent
7
+ - abort if certain files aren't writable
8
+
9
+ 2.1.4
10
+ - fix for DataMapper 1.2.0 compatibility. fixes exceptions on
11
+ POST.
12
+
1
13
  2.1.3
2
14
  - add --foreground, --socket, and --environment options
3
15
  - daemonize by default
data/Gemfile CHANGED
@@ -1,11 +1,2 @@
1
1
  source "http://rubygems.org"
2
- #gem 'dm-migrations'
3
- #gem 'dm-mysql-adapter'
4
- #gem 'dm-timestamps'
5
- #gem 'dm-types'
6
- #gem 'hpricot'
7
- #gem 'sinatra'
8
- #gem 'thin'
9
- #gem 'rake'
10
-
11
2
  gemspec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sras (2.1.2)
4
+ sras (2.1.4)
5
5
  dm-migrations (= 1.2.0)
6
6
  dm-mysql-adapter (= 1.2.0)
7
7
  dm-timestamps (= 1.2.0)
@@ -14,10 +14,10 @@ PATH
14
14
  GEM
15
15
  remote: http://rubygems.org/
16
16
  specs:
17
- addressable (2.2.6)
17
+ addressable (2.2.7)
18
18
  bcrypt-ruby (3.0.1)
19
- daemons (1.1.4)
20
- data_objects (0.10.6)
19
+ daemons (1.1.8)
20
+ data_objects (0.10.8)
21
21
  addressable (~> 2.1)
22
22
  dm-core (1.2.0)
23
23
  addressable (~> 2.2.6)
@@ -39,14 +39,14 @@ GEM
39
39
  multi_json (~> 1.0.3)
40
40
  stringex (~> 1.3.0)
41
41
  uuidtools (~> 2.1.2)
42
- do_mysql (0.10.6)
43
- data_objects (= 0.10.6)
42
+ do_mysql (0.10.8)
43
+ data_objects (= 0.10.8)
44
44
  eventmachine (0.12.10)
45
45
  fastercsv (1.5.4)
46
46
  hpricot (0.8.4)
47
47
  json (1.6.5)
48
48
  multi_json (1.0.4)
49
- rack (1.3.3)
49
+ rack (1.4.1)
50
50
  rake (0.9.2.2)
51
51
  sinatra (1.2.6)
52
52
  rack (~> 1.1)
data/README.rst CHANGED
@@ -70,7 +70,7 @@ table, and have a file contain the asset data on disk.
70
70
 
71
71
  To test retrieval of that asset: ::
72
72
 
73
- $ curl -X GET \
73
+ $ curl -X GET -w '%{http_code}\n' \
74
74
  http://yourserver.example.com:8003/assets/0193663d-44e4-4e6e-9a1c-8dd2febc5fc5/data
75
75
 
76
76
 
data/bin/sras CHANGED
@@ -11,10 +11,6 @@ require "#{ROOT}/../lib/sras/helpers/init.rb"
11
11
 
12
12
  options = {}
13
13
 
14
- # defaults...
15
- options[:environment] = ENV['RACK_ENV'] || 'production'
16
- options[:config_file] = config_file
17
-
18
14
  OptionParser.new do |opts|
19
15
  opts.banner = 'Usage: sras [options] start'
20
16
 
@@ -69,15 +65,9 @@ OptionParser.new do |opts|
69
65
  end
70
66
  end.parse!
71
67
 
72
- RACK_ENV = options[:environment]
68
+ RACK_ENV = options[:environment] || ENV['RACK_ENV'] || 'production'
73
69
 
74
- # load SRAS config file...
75
- if File.exists?(options[:config_file])
76
- @config = YAML.load_file(options[:config_file])
77
- else
78
- warn "Couldn't find SRAS config file. Exiting."
79
- exit 1
80
- end
70
+ @config = load_config_file(options[:config_file])
81
71
 
82
72
  if ! options[:host]
83
73
  if @config['sras'][RACK_ENV]['host']
@@ -113,6 +103,13 @@ end
113
103
 
114
104
  require "#{ROOT}/../lib/sras.rb"
115
105
 
106
+ # abort if default asset dir, log file, or pid file aren't writable...
107
+ [ $default_asset_dir, options[:log_file], options[:pid_file] ].each do |file|
108
+ if File.exists?(file) && ! File.writable?(file)
109
+ abort "Oops. File #{file} isn't writable. Exiting."
110
+ end
111
+ end
112
+
116
113
  if options[:command] == 'start'
117
114
  if options[:socket]
118
115
  server = Thin::Server.new(options[:socket], SRAS.new)
@@ -123,6 +120,7 @@ if options[:command] == 'start'
123
120
  server.pid_file = options[:pid_file]
124
121
  server.tag = 'sras'
125
122
  unless options[:foreground]
123
+ warn "Starting sras on #{options[:host]} port TCP #{options[:port]}"
126
124
  server.daemonize
127
125
  end
128
126
  server.start
@@ -3,6 +3,8 @@ require 'sinatra/base'
3
3
  module Sinatra
4
4
  module AssetHelper
5
5
 
6
+ include Rack::Utils
7
+
6
8
  def get_asset_data(asset_id)
7
9
  @asset = Asset.get(asset_id)
8
10
 
@@ -1,9 +1,24 @@
1
- def config_file()
2
- if File.exists?("#{ROOT}/config/config.yml")
3
- return "#{ROOT}/config/config.yml"
4
- elsif File.exists?(File.expand_path('~/.srasrc'))
5
- return File.expand_path('~/.srasrc')
6
- else
7
- return '/etc/sras/sras.conf'
1
+ #
2
+ # load config file
3
+ #
4
+
5
+ def load_config_file(config_file=nil)
6
+ if config_file.nil?
7
+ if File.exists?("#{ROOT}/config/config.yml")
8
+ config_file = "#{ROOT}/config/config.yml"
9
+ elsif File.exists?(File.expand_path('~/.srasrc'))
10
+ config_file = File.expand_path('~/.srasrc')
11
+ elsif File.exists('/etc/sras/sras.conf')
12
+ config_file = '/etc/sras/sras.conf'
13
+ else
14
+ warn "Couldn't find SRAS config file. Exiting."
15
+ exit 1
16
+ end
17
+ end
18
+
19
+ begin
20
+ return YAML.load_file(config_file)
21
+ rescue
22
+ abort "Oops. Couldn't open config file #{config_file} ... Aborting."
8
23
  end
9
24
  end
@@ -1,11 +1,8 @@
1
- require 'sinatra'
2
1
  require 'dm-core'
3
2
  require 'dm-types'
4
3
  require 'dm-timestamps'
5
4
 
6
- set :environment, RACK_ENV.to_sym
7
-
8
- configure :development do
5
+ if RACK_ENV == 'development'
9
6
  DataMapper::Logger.new(STDOUT, :debug)
10
7
  end
11
8
 
@@ -4,8 +4,8 @@
4
4
  <Guid><%= @asset.id %></Guid>
5
5
  </FullID>
6
6
  <ID><%= @asset.id %></ID>
7
- <Name><%= @asset.name %></Name>
8
- <Description><%= @asset.description %></Description>
7
+ <Name><%= escape_html @asset.name %></Name>
8
+ <Description><%= escape_html @asset.description %></Description>
9
9
  <CreationDate><%= @asset.created_at.to_time.iso8601 %></CreationDate>
10
10
  <Type><%= @asset.asset_type %></Type>
11
11
  <Local><%= @asset.local %></Local>
@@ -5,8 +5,8 @@
5
5
  <Guid><%= @asset.id %></Guid>
6
6
  </FullID>
7
7
  <ID><%= @asset.id %></ID>
8
- <Name><%= @asset.name %></Name>
9
- <Description><%= @asset.description %></Description>
8
+ <Name><%= escape_html @asset.name %></Name>
9
+ <Description><%= escape_html @asset.description %></Description>
10
10
  <Type><%= @asset.asset_type %></Type>
11
11
  <Local><%= @asset.local %></Local>
12
12
  <Temporary><%= @asset.temporary %></Temporary>
data/lib/sras.rb CHANGED
@@ -7,6 +7,7 @@ require 'digest/sha2'
7
7
  require 'hpricot'
8
8
 
9
9
  class SRAS < Sinatra::Application
10
+ set :environment, RACK_ENV.to_sym
10
11
  set :views, Proc.new { File.join(root, "sras/views") }
11
12
 
12
13
  get '/' do
data/sras.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'sras'
3
- s.version = '2.1.4'
3
+ s.version = '2.1.5'
4
4
  s.summary = 'Simple Ruby Asset Server'
5
5
  s.description = 'Asset server for use with OpenSimulator'
6
6
  s.authors = 'Dave Coyle'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sras
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.4
4
+ version: 2.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-25 00:00:00.000000000Z
12
+ date: 2012-03-26 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: dm-migrations
16
- requirement: &82622250 !ruby/object:Gem::Requirement
16
+ requirement: &73863030 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *82622250
24
+ version_requirements: *73863030
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: dm-mysql-adapter
27
- requirement: &82622020 !ruby/object:Gem::Requirement
27
+ requirement: &73862800 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - =
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.2.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *82622020
35
+ version_requirements: *73862800
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: dm-timestamps
38
- requirement: &82621790 !ruby/object:Gem::Requirement
38
+ requirement: &73862570 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - =
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.2.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *82621790
46
+ version_requirements: *73862570
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: dm-types
49
- requirement: &82621560 !ruby/object:Gem::Requirement
49
+ requirement: &73900110 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - =
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.2.1
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *82621560
57
+ version_requirements: *73900110
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: hpricot
60
- requirement: &82621330 !ruby/object:Gem::Requirement
60
+ requirement: &73899880 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - =
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.8.4
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *82621330
68
+ version_requirements: *73899880
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sinatra
71
- requirement: &82621100 !ruby/object:Gem::Requirement
71
+ requirement: &73899650 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - =
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.2.6
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *82621100
79
+ version_requirements: *73899650
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: thin
82
- requirement: &82620870 !ruby/object:Gem::Requirement
82
+ requirement: &73899420 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - =
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.2.11
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *82620870
90
+ version_requirements: *73899420
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rake
93
- requirement: &82620640 !ruby/object:Gem::Requirement
93
+ requirement: &73899190 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - =
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: 0.9.2.2
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *82620640
101
+ version_requirements: *73899190
102
102
  description: Asset server for use with OpenSimulator
103
103
  email: hello@coyled.com
104
104
  executables: