strelka 0.0.1.pre.244 → 0.0.1.pre.252
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/ChangeLog +57 -3
- data/Manifest.txt +3 -4
- data/Rakefile +1 -1
- data/bin/strelka +4 -7
- data/examples/.env +4 -0
- data/examples/Procfile +8 -0
- data/examples/apps/auth-demo +3 -5
- data/examples/apps/auth-demo2 +10 -9
- data/{data/strelka → examples}/apps/hello-world +1 -2
- data/examples/apps/sessions-demo +2 -2
- data/examples/config.yml +12 -1
- data/examples/gen-config.rb +5 -6
- data/examples/templates/auth-form.tmpl +4 -0
- data/examples/templates/auth-success.tmpl +3 -1
- data/lib/strelka.rb +15 -21
- data/lib/strelka/app.rb +53 -31
- data/lib/strelka/app/auth.rb +260 -132
- data/lib/strelka/app/sessions.rb +25 -31
- data/lib/strelka/authprovider/basic.rb +33 -9
- data/lib/strelka/authprovider/hostaccess.rb +1 -1
- data/lib/strelka/constants.rb +0 -11
- data/lib/strelka/cookie.rb +17 -1
- data/lib/strelka/httpresponse/negotiation.rb +1 -1
- data/lib/strelka/session/db.rb +49 -25
- data/lib/strelka/session/default.rb +39 -19
- data/spec/lib/helpers.rb +3 -24
- data/spec/strelka/app/auth_spec.rb +461 -177
- data/spec/strelka/app/sessions_spec.rb +7 -26
- data/spec/strelka/app_spec.rb +3 -3
- data/spec/strelka/authprovider/basic_spec.rb +4 -4
- data/spec/strelka/httprequest/session_spec.rb +1 -1
- data/spec/strelka/httpresponse/session_spec.rb +1 -1
- data/spec/strelka/session/db_spec.rb +6 -1
- data/spec/strelka/session/default_spec.rb +3 -3
- metadata +7 -8
- metadata.gz.sig +2 -2
- data/examples/apps/ws-echo +0 -17
- data/lib/strelka/logging.rb +0 -301
- data/spec/strelka/logging_spec.rb +0 -74
data.tar.gz.sig
CHANGED
Binary file
|
data/ChangeLog
CHANGED
@@ -1,8 +1,62 @@
|
|
1
|
+
2012-05-31 Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
* .tm_properties, lib/strelka/app/auth.rb,
|
4
|
+
lib/strelka/authprovider/basic.rb,
|
5
|
+
lib/strelka/authprovider/hostaccess.rb,
|
6
|
+
spec/strelka/app/auth_spec.rb,
|
7
|
+
spec/strelka/authprovider/basic_spec.rb:
|
8
|
+
Rewriting auth plugin to work app-agnostically
|
9
|
+
[f569df3baa60] [tip]
|
10
|
+
|
11
|
+
* lib/strelka/app/sessions.rb, lib/strelka/cookie.rb,
|
12
|
+
lib/strelka/session/db.rb, lib/strelka/session/default.rb,
|
13
|
+
spec/strelka/app/sessions_spec.rb,
|
14
|
+
spec/strelka/httprequest/session_spec.rb,
|
15
|
+
spec/strelka/httpresponse/session_spec.rb,
|
16
|
+
spec/strelka/session/db_spec.rb,
|
17
|
+
spec/strelka/session/default_spec.rb:
|
18
|
+
Made session configuration consistent
|
19
|
+
[0b493098c008]
|
20
|
+
|
21
|
+
2012-05-30 Michael Granger <ged@FaerieMUD.org>
|
22
|
+
|
23
|
+
* data/strelka/apps/hello-world, examples/.env, examples/Procfile,
|
24
|
+
examples/apps/auth-demo, examples/apps/auth-demo2, examples/apps
|
25
|
+
/hello-world, examples/apps/sessions-demo, examples/apps/ws-echo,
|
26
|
+
examples/config.yml, examples/gen-config.rb, examples/templates
|
27
|
+
/auth-form.tmpl, examples/templates/auth-success.tmpl:
|
28
|
+
Consolidated examples into a more-cohesive environment
|
29
|
+
[a594decb869b]
|
30
|
+
|
31
|
+
* bin/strelka, lib/strelka.rb, lib/strelka/app.rb,
|
32
|
+
lib/strelka/constants.rb, lib/strelka/logging.rb,
|
33
|
+
spec/strelka/app_spec.rb, spec/strelka/logging_spec.rb:
|
34
|
+
Modify local discovery to be configurable
|
35
|
+
[c3b2a812c363]
|
36
|
+
|
37
|
+
2012-05-29 Michael Granger <ged@FaerieMUD.org>
|
38
|
+
|
39
|
+
* .rvm.gems:
|
40
|
+
Update the inversion depenedency in RVM gemset, too
|
41
|
+
[6d2b72cb478f]
|
42
|
+
|
43
|
+
2012-05-30 Michael Granger <ged@FaerieMUD.org>
|
44
|
+
|
45
|
+
* lib/strelka/httpresponse/negotiation.rb:
|
46
|
+
Dup the negotiated content type in case it's frozen.
|
47
|
+
[dcc8fd6d6c76]
|
48
|
+
|
1
49
|
2012-05-21 Michael Granger <ged@FaerieMUD.org>
|
2
50
|
|
3
51
|
* Rakefile:
|
4
52
|
Updating Inversion dependency
|
5
|
-
[
|
53
|
+
[8309cf9a784a]
|
54
|
+
|
55
|
+
2012-05-27 Michael Granger <ged@FaerieMUD.org>
|
56
|
+
|
57
|
+
* .rvm.gems, Rakefile, spec/lib/helpers.rb:
|
58
|
+
Update to Loggability 0.3 and use its spec helpers.
|
59
|
+
[dff6dc0f1b19]
|
6
60
|
|
7
61
|
2012-05-23 Michael Granger <ged@FaerieMUD.org>
|
8
62
|
|
@@ -72,7 +126,7 @@
|
|
72
126
|
- Adding a 'config' subcommand to dump Configurability defaults for
|
73
127
|
discovered apps.
|
74
128
|
- Update for Loggability changes.
|
75
|
-
[f5c63705cd79]
|
129
|
+
[f5c63705cd79]
|
76
130
|
|
77
131
|
* lib/strelka/app.rb, lib/strelka/app/auth.rb:
|
78
132
|
Adding support for config-discovery
|
@@ -646,7 +700,7 @@
|
|
646
700
|
|
647
701
|
* lib/strelka/app/errors.rb, spec/strelka/app/errors_spec.rb:
|
648
702
|
Add documentation for the Errors plugin, improve test coverage.
|
649
|
-
[ff3ef6e5a7a1]
|
703
|
+
[ff3ef6e5a7a1]
|
650
704
|
|
651
705
|
* Manifest.txt:
|
652
706
|
Add session files to the manifest
|
data/Manifest.txt
CHANGED
@@ -16,11 +16,12 @@ contrib/hoetemplate/data/project/templates/layout.tmpl.erb
|
|
16
16
|
contrib/hoetemplate/data/project/templates/top.tmpl.erb
|
17
17
|
contrib/hoetemplate/lib/file_name.rb.erb
|
18
18
|
contrib/hoetemplate/spec/file_name_spec.rb.erb
|
19
|
-
|
19
|
+
examples/.env
|
20
|
+
examples/Procfile
|
20
21
|
examples/apps/auth-demo
|
21
22
|
examples/apps/auth-demo2
|
23
|
+
examples/apps/hello-world
|
22
24
|
examples/apps/sessions-demo
|
23
|
-
examples/apps/ws-echo
|
24
25
|
examples/config.yml
|
25
26
|
examples/gen-config.rb
|
26
27
|
examples/static/examples.css
|
@@ -55,7 +56,6 @@ lib/strelka/httprequest/session.rb
|
|
55
56
|
lib/strelka/httpresponse.rb
|
56
57
|
lib/strelka/httpresponse/negotiation.rb
|
57
58
|
lib/strelka/httpresponse/session.rb
|
58
|
-
lib/strelka/logging.rb
|
59
59
|
lib/strelka/mixins.rb
|
60
60
|
lib/strelka/paramvalidator.rb
|
61
61
|
lib/strelka/plugins.rb
|
@@ -94,7 +94,6 @@ spec/strelka/httprequest_spec.rb
|
|
94
94
|
spec/strelka/httpresponse/negotiation_spec.rb
|
95
95
|
spec/strelka/httpresponse/session_spec.rb
|
96
96
|
spec/strelka/httpresponse_spec.rb
|
97
|
-
spec/strelka/logging_spec.rb
|
98
97
|
spec/strelka/mixins_spec.rb
|
99
98
|
spec/strelka/paramvalidator_spec.rb
|
100
99
|
spec/strelka/plugins_spec.rb
|
data/Rakefile
CHANGED
@@ -31,7 +31,7 @@ hoespec = Hoe.spec 'strelka' do
|
|
31
31
|
self.dependency 'uuidtools', '~> 2.1'
|
32
32
|
self.dependency 'configurability', '~> 1.0'
|
33
33
|
self.dependency 'pluginfactory', '~> 1.0'
|
34
|
-
self.dependency 'loggability', '~> 0.
|
34
|
+
self.dependency 'loggability', '~> 0.3'
|
35
35
|
self.dependency 'foreman', '~> 0.46'
|
36
36
|
|
37
37
|
self.dependency 'hoe-deveiate', '~> 0.1', :developer
|
data/bin/strelka
CHANGED
@@ -205,10 +205,7 @@ class Strelka::CLICommand
|
|
205
205
|
# Set the datadir override if it's given
|
206
206
|
if self.options.datadir
|
207
207
|
self.log.debug "Using data dir option: %s" % [ self.options.datadir ]
|
208
|
-
Strelka.
|
209
|
-
elsif File.directory?( 'data' ) && subdir = Dir[ 'data/*' ].first
|
210
|
-
self.log.debug "Using local data dir: %s" % [ subdir ]
|
211
|
-
Strelka.datadir = subdir
|
208
|
+
Strelka::App.local_data_dirs = Pathname( self.options.datadir )
|
212
209
|
end
|
213
210
|
|
214
211
|
# Include a 'lib' directory if there is one
|
@@ -330,10 +327,10 @@ class Strelka::CLICommand
|
|
330
327
|
discovered_apps[ discovery_name ].each do |apppath|
|
331
328
|
message " loading %s (%s)" % [ apppath, apppath.basename('.rb') ]
|
332
329
|
Strelka::App.load( apppath )
|
333
|
-
|
334
|
-
message " dumping config:"
|
335
|
-
$stdout.puts Configurability.default_config.dump
|
336
330
|
end
|
331
|
+
|
332
|
+
message " dumping config:"
|
333
|
+
$stdout.puts Configurability.default_config.dump
|
337
334
|
end
|
338
335
|
help :config, "Dump the configuration for GEMNAME (or the local directory if no gem is specified)"
|
339
336
|
usage :config, "[GEMNAME]"
|
data/examples/.env
ADDED
data/examples/Procfile
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
# Foreman procfile
|
2
|
+
mongrel: m2sh.rb -c mongrel2.sqlite start
|
3
|
+
helloworld: ../bin/strelka -l info -c config.yml start hello-world
|
4
|
+
auth: ../bin/strelka -l info -c config.yml start auth-demo
|
5
|
+
auth2: ../bin/strelka -l info -c config.yml start auth-demo2
|
6
|
+
sessions: ../bin/strelka -l info -c config.yml start sessions-demo
|
7
|
+
# ws: ../bin/strelka -l info -c config.yml start ws-echo
|
8
|
+
|
data/examples/apps/auth-demo
CHANGED
@@ -9,10 +9,7 @@ class AuthDemo < Strelka::App
|
|
9
9
|
# The Mongrel2 appid of this app
|
10
10
|
ID = 'auth-demo'
|
11
11
|
|
12
|
-
|
13
|
-
auth_provider :basic
|
14
|
-
|
15
|
-
plugin :routing
|
12
|
+
plugins :auth, :routing
|
16
13
|
|
17
14
|
### Handle any (authenticated) HTTP request
|
18
15
|
get do |req|
|
@@ -29,4 +26,5 @@ class AuthDemo < Strelka::App
|
|
29
26
|
|
30
27
|
end # class AuthDemo
|
31
28
|
|
32
|
-
AuthDemo.run
|
29
|
+
AuthDemo.run if __FILE__ == $0
|
30
|
+
|
data/examples/apps/auth-demo2
CHANGED
@@ -12,19 +12,20 @@ class AuthDemo2 < Strelka::App
|
|
12
12
|
# The Mongrel2 appid of this app
|
13
13
|
ID = 'auth-demo2'
|
14
14
|
|
15
|
-
plugins :auth, :errors, :templating
|
16
|
-
auth_provider :session
|
15
|
+
plugins :auth, :errors, :templating, :routing
|
17
16
|
|
18
|
-
|
17
|
+
default_type 'text/html'
|
18
|
+
|
19
|
+
layout 'templates/layout.tmpl'
|
19
20
|
templates \
|
20
|
-
form: '
|
21
|
-
success: '
|
21
|
+
form: 'templates/auth-form.tmpl',
|
22
|
+
success: 'templates/auth-success.tmpl'
|
22
23
|
|
23
|
-
on_status AUTH_REQUIRED, :form
|
24
|
+
on_status HTTP::AUTH_REQUIRED, :form
|
24
25
|
|
25
26
|
|
26
27
|
### Handle any (authenticated) HTTP request
|
27
|
-
|
28
|
+
get do |req|
|
28
29
|
return :success
|
29
30
|
end
|
30
31
|
|
@@ -32,6 +33,6 @@ class AuthDemo2 < Strelka::App
|
|
32
33
|
end # class AuthDemo2
|
33
34
|
|
34
35
|
|
35
|
-
|
36
|
-
|
36
|
+
AuthDemo2.run if __FILE__ == $0
|
37
|
+
|
37
38
|
|
data/examples/apps/sessions-demo
CHANGED
data/examples/config.yml
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
mongrel2:
|
2
|
-
configdb: amalgalite://
|
2
|
+
configdb: amalgalite://mongrel2.sqlite
|
3
3
|
|
4
4
|
auth:
|
5
|
+
provider: basic
|
6
|
+
|
7
|
+
basicauth:
|
5
8
|
realm: Examples
|
6
9
|
users:
|
7
10
|
ged: "iEPX+SQWIR3p67lj/0zigSWTKHg="
|
@@ -17,3 +20,11 @@ templates:
|
|
17
20
|
template_paths:
|
18
21
|
- examples/templates
|
19
22
|
|
23
|
+
logging:
|
24
|
+
strelka: debug (color)
|
25
|
+
inversion: info (color)
|
26
|
+
configurability: debug (color)
|
27
|
+
mongrel2: debug (color)
|
28
|
+
|
29
|
+
|
30
|
+
|
data/examples/gen-config.rb
CHANGED
@@ -27,15 +27,14 @@ server 'examples' do
|
|
27
27
|
|
28
28
|
host 'localhost' do
|
29
29
|
|
30
|
-
route '/', directory( '
|
31
|
-
|
32
|
-
authdemo = handler( 'tcp://127.0.0.1:9910', 'auth-demo' )
|
30
|
+
route '/', directory( 'static/', 'examples.html', 'text/html' )
|
33
31
|
|
34
32
|
# Handlers
|
35
|
-
route '/hello', handler( 'tcp://127.0.0.1:9900', '
|
33
|
+
route '/hello', handler( 'tcp://127.0.0.1:9900', 'hello-world' )
|
36
34
|
route '/sessions', handler( 'tcp://127.0.0.1:9905', 'sessions-demo' )
|
37
|
-
route '/auth',
|
38
|
-
route '/
|
35
|
+
route '/auth', handler( 'tcp://127.0.0.1:9910', 'auth-demo' )
|
36
|
+
route '/formauth', handler( 'tcp://127.0.0.1:9915', 'auth-demo2' )
|
37
|
+
route '/ws', handler( 'tcp://127.0.0.1:9920', 'ws-echo' )
|
39
38
|
|
40
39
|
end
|
41
40
|
|
data/lib/strelka.rb
CHANGED
@@ -27,14 +27,25 @@ module Strelka
|
|
27
27
|
VERSION = '0.0.1'
|
28
28
|
|
29
29
|
# Version-control revision constant
|
30
|
-
REVISION = %q$Revision:
|
30
|
+
REVISION = %q$Revision: c3b2a812c363 $
|
31
31
|
|
32
32
|
require 'strelka/constants'
|
33
|
+
require 'strelka/exceptions'
|
33
34
|
include Strelka::Constants
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
36
|
+
autoload :AuthProvider, 'strelka/authprovider'
|
37
|
+
autoload :Cookie, 'strelka/cookie'
|
38
|
+
autoload :CookieSet, 'strelka/cookieset'
|
39
|
+
autoload :ParamValidator, 'strelka/httpresponse'
|
40
|
+
autoload :Plugin, 'strelka/plugins'
|
41
|
+
autoload :PluginLoader, 'strelka/plugins'
|
42
|
+
autoload :PluginRegistry, 'strelka/plugins'
|
43
|
+
autoload :Router, 'strelka/router'
|
44
|
+
autoload :Session, 'strelka/session'
|
45
|
+
|
46
|
+
require 'strelka/app'
|
47
|
+
require 'strelka/httprequest'
|
48
|
+
require 'strelka/httpresponse'
|
38
49
|
|
39
50
|
|
40
51
|
### Get the library version. If +include_buildnum+ is true, the version string will
|
@@ -46,23 +57,6 @@ module Strelka
|
|
46
57
|
end
|
47
58
|
|
48
59
|
|
49
|
-
##
|
50
|
-
# The Pathname of the directory that will be searched for default applications,
|
51
|
-
# config, etc.
|
52
|
-
singleton_attr_reader :datadir
|
53
|
-
|
54
|
-
### Set the local data directory to +dir+.
|
55
|
-
def self::datadir=( dir )
|
56
|
-
@datadir = Pathname( dir )
|
57
|
-
end
|
58
|
-
self.datadir = DEFAULT_DATADIR
|
59
|
-
|
60
|
-
|
61
|
-
require 'strelka/app'
|
62
|
-
require 'strelka/httprequest'
|
63
|
-
require 'strelka/httpresponse'
|
64
|
-
|
65
|
-
|
66
60
|
# The installed Configurability::Config object
|
67
61
|
@config = nil
|
68
62
|
class << self; attr_accessor :config; end
|
data/lib/strelka/app.rb
CHANGED
@@ -31,16 +31,27 @@ class Strelka::App < Mongrel2::Handler
|
|
31
31
|
|
32
32
|
# Glob for matching Strelka apps relative to a gem's data directory
|
33
33
|
APP_GLOB_PATTERN = '{apps,handlers}/**/*'
|
34
|
+
APP_GLOB_PATTERN.freeze
|
35
|
+
|
36
|
+
# The glob for matching data directories relative to the PWD
|
37
|
+
LOCAL_DATA_DIRS = 'data/*'
|
38
|
+
LOCAL_DATA_DIRS.freeze
|
34
39
|
|
35
40
|
# Default config
|
36
|
-
CONFIG_DEFAULTS = {
|
41
|
+
CONFIG_DEFAULTS = {
|
42
|
+
devmode: false,
|
43
|
+
app_glob_pattern: APP_GLOB_PATTERN,
|
44
|
+
local_data_dirs: LOCAL_DATA_DIRS,
|
45
|
+
}.freeze
|
37
46
|
|
38
47
|
|
39
48
|
# Class instance variables
|
40
|
-
@devmode
|
41
|
-
@default_type
|
42
|
-
@loading_file
|
43
|
-
@subclasses
|
49
|
+
@devmode = false
|
50
|
+
@default_type = nil
|
51
|
+
@loading_file = nil
|
52
|
+
@subclasses = Hash.new {|h,k| h[k] = [] }
|
53
|
+
@app_glob_pattern = APP_GLOB_PATTERN
|
54
|
+
@local_data_dirs = LOCAL_DATA_DIRS
|
44
55
|
|
45
56
|
|
46
57
|
##
|
@@ -52,6 +63,42 @@ class Strelka::App < Mongrel2::Handler
|
|
52
63
|
# 'Developer mode' flag.
|
53
64
|
singleton_attr_writer :devmode
|
54
65
|
|
66
|
+
##
|
67
|
+
# The glob(3) pattern for matching Apps during discovery
|
68
|
+
singleton_attr_accessor :app_glob_pattern
|
69
|
+
|
70
|
+
##
|
71
|
+
# The glob(3) pattern for matching local data directories during discovery. Local
|
72
|
+
# data directories are evaluated relative to the CWD.
|
73
|
+
singleton_attr_accessor :local_data_dirs
|
74
|
+
|
75
|
+
|
76
|
+
### Configure the App. Override this if you wish to add additional configuration
|
77
|
+
### to the 'app' section of the config that will be passed to you when the config
|
78
|
+
### is loaded.
|
79
|
+
def self::configure( config=nil )
|
80
|
+
if config
|
81
|
+
self.devmode = true if config[:devmode]
|
82
|
+
self.app_glob_pattern = config[:app_glob_pattern]
|
83
|
+
self.local_data_dirs = config[:local_data_dirs]
|
84
|
+
else
|
85
|
+
self.devmode = $DEBUG ? true : false
|
86
|
+
self.app_glob_pattern = APP_GLOB_PATTERN
|
87
|
+
self.local_data_dirs = LOCAL_DATA_DIRS
|
88
|
+
end
|
89
|
+
|
90
|
+
self.log.info "Enabled developer mode." if self.devmode?
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
### Returns +true+ if the application has been configured to run in 'developer mode'.
|
95
|
+
### Developer mode is mostly informational by default (it just makes logging more
|
96
|
+
### verbose), but plugins and such might alter their behavior based on this setting.
|
97
|
+
def self::devmode?
|
98
|
+
return @devmode
|
99
|
+
end
|
100
|
+
singleton_method_alias :in_devmode?, :devmode?
|
101
|
+
|
55
102
|
|
56
103
|
### Inheritance callback -- add subclasses to @subclasses so .load can figure out which
|
57
104
|
### classes correspond to which files.
|
@@ -94,10 +141,8 @@ class Strelka::App < Mongrel2::Handler
|
|
94
141
|
### Return a Hash of Strelka app files as Pathname objects from installed gems,
|
95
142
|
### keyed by gemspec name .
|
96
143
|
def self::discover_paths
|
97
|
-
self.log.debug "Local paths: %s" % [ Strelka.datadir + APP_GLOB_PATTERN ]
|
98
|
-
|
99
144
|
appfiles = {
|
100
|
-
'' => Pathname.glob(
|
145
|
+
'' => Pathname.glob( File.join(self.local_data_dirs, self.app_glob_pattern) )
|
101
146
|
}
|
102
147
|
|
103
148
|
# Find all the gems that depend on Strelka
|
@@ -172,29 +217,6 @@ class Strelka::App < Mongrel2::Handler
|
|
172
217
|
end
|
173
218
|
|
174
219
|
|
175
|
-
### Returns +true+ if the application has been configured to run in 'developer mode'.
|
176
|
-
### Developer mode is mostly informational by default (it just makes logging more
|
177
|
-
### verbose), but plugins and such might alter their behavior based on this setting.
|
178
|
-
def self::devmode?
|
179
|
-
return @devmode
|
180
|
-
end
|
181
|
-
singleton_method_alias :in_devmode?, :devmode?
|
182
|
-
|
183
|
-
|
184
|
-
### Configure the App. Override this if you wish to add additional configuration
|
185
|
-
### to the 'app' section of the config that will be passed to you when the config
|
186
|
-
### is loaded.
|
187
|
-
def self::configure( config=nil )
|
188
|
-
if config
|
189
|
-
self.devmode = true if config[:devmode]
|
190
|
-
else
|
191
|
-
self.devmode = $DEBUG ? true : false
|
192
|
-
end
|
193
|
-
|
194
|
-
self.log.info "Enabled developer mode." if self.devmode?
|
195
|
-
end
|
196
|
-
|
197
|
-
|
198
220
|
#
|
199
221
|
# :section: Application declarative methods
|
200
222
|
#
|