rubycas-server 1.0 → 1.0.1

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.
data/CHANGELOG CHANGED
@@ -1,4 +1,17 @@
1
- === 1.0.0 :: In Progress...
1
+ === 1.0.1 :: 2011-11-22
2
+
3
+ * NEW:
4
+ * On startup the server now checks for a config.yml file in its own root directory,
5
+ then in /etc/rubycas-server.
6
+
7
+ * FIXED:
8
+ * Compatibilty with Sinatra 1.3 (:public changed to :public_folder).
9
+ * Database migration files should now be correctly bundled with the gem distribution.
10
+ * Should work with both ActiveRecord >= 2.3.12 and < 3.1. Previously the dependency
11
+ was erronously set to accept only the 2.3.12 series.
12
+ * Specs now pass under ActiveRecord 2.3.12 in both Ruby 1.8 and 1.9
13
+
14
+ === 1.0.0 :: 2011-08-03
2
15
 
3
16
  * NEW:
4
17
  * Rewrite to replace Camping/Picnic with Sinatra
data/README.md CHANGED
@@ -1,36 +1,5 @@
1
- # RubyCAS-Server ![http://stillmaintained.com/gunark/rubycas-server](http://stillmaintained.com/gunark/rubycas-server.png)
1
+ # MOVED!
2
2
 
3
- ## Copyright
3
+ This repo has been moved to https://github.com/rubycas/rubycas-server.
4
4
 
5
- Portions contributed by Matt Zukowski are copyright (c) 2010 Urbacon Ltd.
6
- Other portions are copyright of their respective authors.
7
-
8
- ## Authors
9
-
10
- See http://github.com/gunark/rubycas-server/commits/
11
-
12
- ## Installation
13
-
14
- on ubuntu using unicorn:
15
-
16
- git clone git@github.com:seven1240/rubycas-server.git
17
- cd rubycas-server
18
- sudo bundle install
19
-
20
- If it complains mysql connectivity, do this
21
-
22
- apt-get install libmysqlclient16-dev
23
- sudo gem install mysql2
24
-
25
- copy resources/config.example.yml into /etc/rubycas-server/config.yml, there's way to put the config in other place, yet to document. Change the config to meet your requests.
26
-
27
- You might also want to change config/unicorn.conf
28
-
29
- unicorn -D -c config/unicorn.conf
30
-
31
- For info and detailed installation instructions please see http://code.google.com/p/rubycas-server
32
-
33
- ## License
34
-
35
- RubyCAS-Server is licensed for use under the terms of the MIT License.
36
- See the LICENSE file bundled with the official RubyCAS-Server distribution for details.
5
+ The fork you are looking at is no longer updated. Please change your git remotes to the new rubycas URL.
@@ -0,0 +1,592 @@
1
+ # IMPORTANT NOTE ABOUT YAML CONFIGURATION FILES
2
+ # ---> Be sure to use spaces instead of tabs for indentation. YAML is
3
+ # white-space sensitive!
4
+
5
+ ##### SERVER SETUP ################################################################
6
+
7
+ # There are several ways to run RubyCAS-Server:
8
+ #
9
+ # webrick -- stand-alone WEBrick server; should work out-of-the-box; this is
10
+ # the default method, but probably not suited for high-traffic usage
11
+ # mongrel -- stand-alone Mongrel server; fast, but you'll need to install
12
+ # and compile Mongrel and run it behind an https reverse proxy like
13
+ # Pound or Apache 2.2's mod_proxy (since Mongrel cannot serve out
14
+ # over SSL on its own).
15
+ # passenger -- served out by Apache via the mod_rails/mod_rack module
16
+ # (see http://www.modrails.com/)
17
+ #
18
+ # The following are exampe configurations for each of these three methods:
19
+ #
20
+
21
+
22
+ ###
23
+ ### WEBrick example
24
+ ###
25
+ # WEBrick is a simple, all-Ruby web server. This is the easiest method for running
26
+ # RubyCAS-Server. All you need is an SSL certificate (enter its path under the
27
+ # ssl_cert option). WEBrick is fine for sites with low to medium traffic, but for
28
+ # high-performance scenarios you may want to look into deploying using Mongrel
29
+ # or Passenger.
30
+
31
+ server: webrick
32
+ port: 443
33
+ ssl_cert: /path/to/your/ssl.pem
34
+
35
+ # If your private key is in a separate file from the cert
36
+
37
+ #ssl_key: /path/to/your/private_key.pem
38
+
39
+ # If you do not already have an SSL certificate and would like to automatically
40
+ # generate one, run the "generate_ssl_certificate" rake task and use the following
41
+ # settings:
42
+
43
+ # ssl_cert: ssl/cert.pem
44
+ # ssl_key: ssl/key.pem
45
+
46
+
47
+ # By default the login page will be available at the root path
48
+ # (e.g. https://login.example.net/). The uri_path option lets you serve it from a
49
+ # different path (e.g. https://login.example.net/cas).
50
+
51
+ #uri_path: /cas
52
+
53
+
54
+ # This lets you bind the server to a specific address. Use 0.0.0.0 to listen on
55
+ # all available interfaces (this is the default).
56
+
57
+ #bind_address: 0.0.0.0
58
+
59
+
60
+ ###
61
+ ### Mongrel example
62
+ ###
63
+ # Mongrel is much faster than WEBrick, but there are two caveats:
64
+ # 1. Since Mongrel can't serve out encrypted HTTP on its own (and CAS requires this),
65
+ # you will have to set up a reverse proxy like Pound or Apache's mod_proxy and
66
+ # route through it requests to the Mongrel server. So for example,
67
+ # your Pound server will receive all of the requests to RubyCAS-Server on port 443,
68
+ # and forward them to the Mongrel server listening on port 11011.
69
+ # 2. Some of Mongrel's components are compiled into native binaries, so if you are
70
+ # installing on Linux, make sure you have all of the standard build tools
71
+ # available. The binaries should be automatically compiled for you when you
72
+ # install the mogrel gem (if you're runnings Windows, pre-compiled
73
+ # binaries will be downloaded and installed, so don't worry about this).
74
+
75
+ #server: mongrel
76
+ #port: 11011
77
+
78
+
79
+ # Bind the server to a specific address. Use 0.0.0.0 to listen on all
80
+ # available interfaces (this is the default).
81
+
82
+ #bind_address: 0.0.0.0
83
+
84
+ ### Reverse proxy configuration examples
85
+ # If you're using mod_proxy, your Apache vhost config should look something like this:
86
+ #
87
+ # Listen 443
88
+ # <VirtualHost *:443>
89
+ # ServerAdmin admin@example.net
90
+ # ServerName login.example.net
91
+ #
92
+ # SSLEngine On
93
+ # SSLCertificateFile /etc/apache2/ssl.crt/example.pem
94
+ #
95
+ # # Don't do forward proxying, we only want reverse proxying
96
+ # ProxyRequests Off
97
+ #
98
+ # <Proxy balancer://rubycas>
99
+ # Order allow,deny
100
+ # Allow from all
101
+ # BalancerMember http://127.0.0.1:11011
102
+ # </Proxy>
103
+ # </VirtualHost>
104
+ #
105
+ # For Pound, the config should be something like:
106
+ #
107
+ # ListenHTTPS
108
+ # Address 0.0.0.0
109
+ # Port 11011
110
+ # Cert "/etc/ssl/example.pem"
111
+ #
112
+ # Service
113
+ # BackEnd
114
+ # Address localhost
115
+ # Port 443
116
+ # End
117
+ # End
118
+ # End
119
+
120
+
121
+ ###
122
+ ### Phusion Passenger (running under Apache configured for SSL)
123
+ ###
124
+
125
+ # No additional configuration is requried to run RubyCAS-Server under
126
+ # passsenger. Just follow the normal instructions for a Passenger app
127
+ # (see http://www.modrails.com/).
128
+ #
129
+ # Here's an example Apache vhost config for RubyCAS-Server and Passenger:
130
+ #
131
+ # Listen 443
132
+ # <VirtualHost *:443>
133
+ # ServerAdmin admin@example.net
134
+ # ServerName login.example.net
135
+ #
136
+ # SSLEngine On
137
+ # SSLCertificateFile /etc/apache2/ssl.crt/example.pem
138
+ #
139
+ # RailsAutoDetect off
140
+ #
141
+ # DocumentRoot /usr/lib/ruby/gems/1.8/gems/rubycas-server-0.8.0/public
142
+ #
143
+ # <Directory "/usr/lib/ruby/gems/1.8/gems/rubycas-server-0.8.0/public">
144
+ # AllowOverride all
145
+ # Allow from all
146
+ # </Directory>
147
+ # </VirtualHost>
148
+ #
149
+
150
+
151
+ ##### DATABASE #################################################################
152
+
153
+ # Set up the database connection. Make sure that this database is secure!
154
+ #
155
+ # By default, we use MySQL, since it is widely used and does not require any
156
+ # additional ruby libraries besides ActiveRecord.
157
+ #
158
+ # With MySQL, your config would be something like the following:
159
+ # (be sure to create the casserver database in MySQL beforehand,
160
+ # i.e. `mysqladmin -u root create casserver`)
161
+
162
+ database:
163
+ adapter: mysql
164
+ database: casserver
165
+ username: root
166
+ password:
167
+ host: localhost
168
+ reconnect: true
169
+
170
+ # IMPORTANT! By default, the server can handle up to ~5 concurrent requests
171
+ # (without queuing). You can increase this by setting the database connection
172
+ # pool size to a higher number. For example, to handle up to ~10 concurrent
173
+ # requests:
174
+ #
175
+ #database:
176
+ # pool: 10
177
+ # adapter: mysql
178
+ # database: casserver
179
+ # username: root
180
+ # password:
181
+ # host: localhost
182
+
183
+ #
184
+ # Instead of MySQL you can use SQLite3, PostgreSQL, MSSQL, or anything else
185
+ # supported by ActiveRecord.
186
+ #
187
+ # With SQLite3 (which does not require a separate database server), your
188
+ # configuration would look something like the following (don't forget to install
189
+ # the sqlite3-ruby gem beforehand!):
190
+
191
+ #database:
192
+ # adapter: sqlite3
193
+ # database: /var/lib/casserver.db
194
+
195
+
196
+ # By default RubyCAS-Server will run migrations at every startup to ensure
197
+ # that its database schema is up-to-date. To disable this behaviour set
198
+ # the following option to true:
199
+
200
+ #disable_auto_migrations: true
201
+
202
+ ##### AUTHENTICATION ###########################################################
203
+
204
+ # Configure how username/passwords are validated.
205
+ #
206
+ # !!! YOU MUST CONFIGURE AT LEAST ONE OF THESE AUTHENTICATION METHODS !!!
207
+ #
208
+ # There are several built-in methods for authentication:
209
+ # SQL, ActiveDirectory, LDAP, and GoogleAccounts. If none of these work for you,
210
+ # it is relatively easy to write your own custom Authenticator class (see below).
211
+ #
212
+ # === SQL Authentication =======================================================
213
+ #
214
+ # The simplest method is to validate against a SQL database. This assumes
215
+ # that all of your users are stored in a table that has a 'username' column
216
+ # and a 'password' column. When the user logs in, CAS connects to this database
217
+ # and looks for a matching username/password in the users table. If a matching
218
+ # username and password is found, authentication is successful.
219
+ #
220
+ # If you prefer to have your passwords stored in an encrypted form, have a
221
+ # look at the SQLEncrypted authenticator:
222
+ # http://code.google.com/p/rubycas-server/wiki/UsingTheSQLEncryptedAuthenticator
223
+ #
224
+ # If your users table stores passwords with MD5 hashing (for example as with
225
+ # Drupal) try using the SQLMd5 version of the SQL authenticator.
226
+ #
227
+ # Example:
228
+ #
229
+ #authenticator:
230
+ # class: CASServer::Authenticators::SQL
231
+ # database:
232
+ # adapter: mysql
233
+ # database: some_database_with_users_table
234
+ # username: root
235
+ # password:
236
+ # host: localhost
237
+ # user_table: users
238
+ # username_column: username
239
+ # password_column: password
240
+ #
241
+ # When replying to a CAS client's validation request, the server will normally
242
+ # provide the client with the authenticated user's username. However it is
243
+ # possible for the server to provide the client with additional attributes.
244
+ # You can configure the SQL authenticator to provide data from additional
245
+ # columns in the users table by listing the names of the columns under the
246
+ # 'extra_attributes' option. Note though that this functionality is experimental.
247
+ # It should work with RubyCAS-Client, but may or may not work with other CAS
248
+ # clients.
249
+ #
250
+ # For example, with this configuration, the 'full_name' and 'access_level'
251
+ # columns will be provided to your CAS clients along with the username:
252
+ #
253
+ #authenticator:
254
+ # class: CASServer::Authenticators::SQL
255
+ # database:
256
+ # adapter: mysql
257
+ # database: some_database_with_users_table
258
+ # user_table: users
259
+ # username_column: username
260
+ # password_column: password
261
+ # extra_attributes: full_name, access_level
262
+ #
263
+ #
264
+ #
265
+ # === Google Authentication ====================================================
266
+ #
267
+ # The Google authenticator allows users to log in to your CAS server using
268
+ # their Google account credentials (i.e. the same email and password they
269
+ # would use to log in to Google services like Gmail). This authenticator
270
+ # requires no special configuration -- just specify its class name:
271
+ #
272
+ #authenticator:
273
+ # class: CASServer::Authenticators::Google
274
+ #
275
+ # If you are behind an http proxy, you can try specifying proxy settings as follows:
276
+ #
277
+ #authenticator:
278
+ # class: CASServer::Authenticators::Google
279
+ # proxy:
280
+ # host: your-proxy-server
281
+ # port: 8080
282
+ # username: nil
283
+ # password: nil
284
+ #
285
+ # Note that as with all authenticators, it is possible to use the Google
286
+ # authenticator alongside other authenticators. For example, CAS can first
287
+ # attempt to validate the account with Google, and if that fails, fall back
288
+ # to some other local authentication mechanism.
289
+ #
290
+ # For example:
291
+ #
292
+ #authenticator:
293
+ # - class: CASServer::Authenticators::Google
294
+ # - class: CASServer::Authenticators::SQL
295
+ # database:
296
+ # adapter: mysql
297
+ # database: some_database_with_users_table
298
+ # username: root
299
+ # password:
300
+ # host: localhost
301
+ # user_table: user
302
+ # username_column: username
303
+ # password_column: password
304
+ #
305
+ #
306
+ # === ActiveDirectory Authentication ===========================================
307
+ #
308
+ # This method authenticates against Microsoft's Active Directory using LDAP.
309
+ # You must configure the ActiveDirectory server, and base DN. The port number
310
+ # and LDAP filter are optional. You must also enter a CN and password
311
+ # for a special "authenticator" user. This account is used to log in to
312
+ # the ActiveDirectory server and search LDAP. This does not have to be an
313
+ # administrative account -- it only has to be able to search for other
314
+ # users.
315
+ #
316
+ # Note that the auth_user parameter must be the user's CN (Common Name).
317
+ # In Active Directory, the CN is genarally the user's full name, which is usually
318
+ # NOT the same as their username (sAMAccountName).
319
+ #
320
+ # For example:
321
+ #
322
+ #authenticator:
323
+ # class: CASServer::Authenticators::ActiveDirectoryLDAP
324
+ # ldap:
325
+ # host: ad.example.net
326
+ # port: 389
327
+ # base: dc=example,dc=net
328
+ # filter: (objectClass=person)
329
+ # auth_user: authenticator
330
+ # auth_password: itsasecret
331
+ #
332
+ # A more complicated example, where the authenticator will use TLS encryption,
333
+ # will ignore users with disabled accounts, and will pass on the 'cn' and 'mail'
334
+ # attributes to CAS clients:
335
+ #
336
+ #authenticator:
337
+ # class: CASServer::Authenticators::ActiveDirectoryLDAP
338
+ # ldap:
339
+ # host: ad.example.net
340
+ # port: 636
341
+ # base: dc=example,dc=net
342
+ # filter: (objectClass=person) & !(msExchHideFromAddressLists=TRUE)
343
+ # auth_user: authenticator
344
+ # auth_password: itsasecret
345
+ # encryption: simple_tls
346
+ # extra_attributes: cn, mail
347
+ #
348
+ # It is possible to authenticate against Active Directory without the
349
+ # authenticator user, but this requires that users type in their CN as
350
+ # the username rather than typing in their sAMAccountName. In other words
351
+ # users will likely have to authenticate by typing their full name,
352
+ # rather than their username. If you prefer to do this, then just
353
+ # omit the auth_user and auth_password values in the above example.
354
+ #
355
+ #
356
+ # === LDAP Authentication ======================================================
357
+ #
358
+ # This is a more general version of the ActiveDirectory authenticator.
359
+ # The configuration is similar, except you don't need an authenticator
360
+ # username or password. The following example has been reported to work
361
+ # for a basic OpenLDAP setup.
362
+ #
363
+ #authenticator:
364
+ # class: CASServer::Authenticators::LDAP
365
+ # ldap:
366
+ # host: ldap.example.net
367
+ # port: 389
368
+ # base: dc=example,dc=net
369
+ # username_attribute: uid
370
+ # filter: (objectClass=person)
371
+ #
372
+ # If you need more secure connections via TSL, specify the 'encryption'
373
+ # option and change the port. This example also forces the authenticator
374
+ # to connect using a special "authenticator" user with the given
375
+ # username and password (see the ActiveDirectoryLDAP authenticator
376
+ # explanation above):
377
+ #
378
+ #authenticator:
379
+ # class: CASServer::Authenticators::LDAP
380
+ # ldap:
381
+ # host: ldap.example.net
382
+ # port: 636
383
+ # base: dc=example,dc=net
384
+ # filter: (objectClass=person)
385
+ # encryption: simple_tls
386
+ # auth_user: cn=admin,dc=example,dc=net
387
+ # auth_password: secret
388
+ #
389
+ # If you need additional data about the user passed to the client (for example,
390
+ # their 'cn' and 'mail' attributes, you can specify the list of attributes
391
+ # under the extra_attributes config option:
392
+ #
393
+ #authenticator:
394
+ # class: CASServer::Authenticators::LDAP
395
+ # ldap:
396
+ # host: ldap.example.net
397
+ # port: 389
398
+ # base: dc=example,dc=net
399
+ # filter: (objectClass=person)
400
+ # extra_attributes: cn, mail
401
+ #
402
+ # Note that the above functionality is somewhat limited by client compatibility.
403
+ # See the SQL authenticator notes above for more info.
404
+ #
405
+ #
406
+ # === Custom Authentication ====================================================
407
+ #
408
+ # It should be relatively easy to write your own Authenticator class. Have a look
409
+ # at the built-in authenticators in the casserver/authenticators directory. Your
410
+ # authenticator should extend the CASServer::Authenticators::Base class and must
411
+ # implement a validate() method that takes a single hash argument. When the user
412
+ # submits the login form, the username and password they entered is passed to
413
+ # validate() as a hash under :username and :password keys. In the future, this
414
+ # hash might also contain other data such as the domain that the user is logging
415
+ # in to.
416
+ #
417
+ # To use your custom authenticator, specify it's class name and path to the
418
+ # source file in the authenticator section of the config. Any other parameters
419
+ # you specify in the authenticator configuration will be passed on to the
420
+ # authenticator and made availabe in the validate() method as an @options hash.
421
+ #
422
+ # Example:
423
+ #
424
+ #authenticator:
425
+ # class: FooModule::MyCustomAuthenticator
426
+ # source: /path/to/source.rb
427
+ # option_a: foo
428
+ # another_option: yeeha
429
+ #
430
+ # === Multiple Authenticators ==================================================
431
+ #
432
+ # If you need to have more than one source for authentication, such as an LDAP
433
+ # directory and a database, you can use multiple authenticators by making
434
+ # :authenticator an array of authenticators.
435
+ #
436
+ #authenticator:
437
+ # -
438
+ # class: CASServer::Authenticators::ActiveDirectoryLDAP
439
+ # ldap:
440
+ # host: ad.example.net
441
+ # port: 389
442
+ # base: dc=example,dc=net
443
+ # filter: (objectClass=person)
444
+ # -
445
+ # class: CASServer::Authenticators::SQL
446
+ # database:
447
+ # adapter: mysql
448
+ # database: some_database_with_users_table
449
+ # username: root
450
+ # password:
451
+ # host: localhost
452
+ # user_table: user
453
+ # username_column: username
454
+ # password_column: password
455
+ #
456
+ # During authentication, the user credentials will be checked against the first
457
+ # authenticator and on failure fall through to the second authenticator.
458
+ #
459
+
460
+
461
+ ##### LOOK & FEEL ##############################################################
462
+
463
+ # Set the path to the theme directory that determines how your CAS pages look.
464
+ #
465
+ # Custom themes are not well supported yet, but will be in the near future. In
466
+ # the meantime, if you want to create a custom theme, you can create a
467
+ # subdirectory under the CASServer's themes dir (for example,
468
+ # '/usr/lib/ruby/1.8/gems/casserver-xxx/public/themes', if you installed CASServer
469
+ # on Linux as a gem). A theme is basically just a theme.css file that overrides
470
+ # the themes/cas.css styles along with a collection of image files
471
+ # like logo.png and bg.png.
472
+ #
473
+ # By default, we use the 'simple' theme which you can find in themes/simple.
474
+ theme: simple
475
+
476
+ # The name of your company/organization. This will show up on the login page.
477
+ organization: CAS
478
+
479
+ # A short bit of text that shows up on the login page. You can make this blank
480
+ # if you prefer to have no extra text shown at the bottom of the login box.
481
+ infoline: Powered by <a href="http://code.google.com/p/rubycas-server/">RubyCAS-Server</a>
482
+
483
+ # Custom views directory. If set, this will be used instead of 'lib/casserver/views'.
484
+ #custom_views: /path/to/custom/views
485
+
486
+ # Custom public directory. If set, static content (css, etc.) will be served from here rather
487
+ # than from rubycas-server's internal 'public' directory (but be mindful of any overriding
488
+ # settings you may have in your web server's config).
489
+ #public_dir: /path/to/custom/public
490
+
491
+ ##### LOCALIZATION (L10N) #######################################################
492
+ # The server will attempt to detect the user's locale and show text in the
493
+ # appropriate language based on:
494
+ #
495
+ # 1. The 'lang' URL parameter (if any)
496
+ # 2. The 'lang' cookie (if any)
497
+ # 3. The HTTP_ACCEPT_LANGUAGE header supplied by the user's browser.
498
+ # 4. The HTTP_USER_AGENT header supplied by the user's browser.
499
+ #
500
+ # If the locale cannot be established based on one of the above checks (in the
501
+ # shown order), then the below 'default_locale' option will be used.
502
+ #
503
+ # The format is the same as standard linux locales (langagecode_COUNTRYCODE):
504
+ #
505
+ # ru_RU - Russian, Russia
506
+ # eo_AQ - Esperanto, Antarctica
507
+ #
508
+ # It will also work if you leave out the region (i.e. just "ru" for Russian,
509
+ # "eo" for Esperanto).
510
+ #
511
+ # If you are interested in contributing new translations or have corrections
512
+ # to the existing translations, see
513
+ # http://code.google.com/p/rubycas-server/wiki/HowToContribueTranslations
514
+ #
515
+ default_locale: en
516
+
517
+ ##### LOGGING ##################################################################
518
+
519
+ # Configure general logging. This log is where you'll want to look in case of
520
+ # problems.
521
+ #
522
+ # You may want to change the file to something like /var/log/casserver.log
523
+ # Set the level to DEBUG if you want more detailed logging.
524
+
525
+ log:
526
+ file: /var/log/casserver.log
527
+ level: INFO
528
+
529
+
530
+ # If you want full database logging, uncomment this next section.
531
+ # Every SQL query will be logged here. This is useful for debugging database
532
+ # problems.
533
+
534
+ #db_log:
535
+ # file: /var/log/casserver_db.log
536
+
537
+
538
+ # Setting the following option to true will disable CLI output to stdout.
539
+ # i.e. this will get rid of messages like ">>> Redirecting RubyCAS-Server log..."
540
+ # This is useful when, for example, you're running rspecs.
541
+
542
+ #quiet: true
543
+
544
+
545
+ ##### SINGLE SIGN-OUT ##########################################################
546
+
547
+ # When a user logs in to a CAS-enabled client application, that application
548
+ # generally opens its own local user session. When the user then logs out
549
+ # through the CAS server, each of the CAS-enabled client applications need
550
+ # to be notified so that they can close their own local sessions for that user.
551
+ #
552
+ # Up until recently this was not possible within CAS. However, a method for
553
+ # performing this notification was recently added to the protocol (in CAS 3.1).
554
+ # This works exactly as described above -- when the user logs out, the CAS
555
+ # server individually contacts each client service and notifies it of the
556
+ # logout. Currently not all client applications support this, so this
557
+ # behaviour is disabled by default. To enable it, uncomment the following
558
+ # configuration line. Note that currently it is not possible to enable
559
+ # or disable single-sign-out on a per-service basis, but this functionality
560
+ # is planned for a future release.
561
+
562
+ #enable_single_sign_out: true
563
+
564
+
565
+ ##### OTHER ####################################################################
566
+
567
+ # You can set various ticket expiry times (specify the value in seconds).
568
+
569
+ # Unused login and service tickets become unusable this many seconds after
570
+ # they are created. (Defaults to 5 minutes)
571
+
572
+ #maximum_unused_login_ticket_lifetime: 300
573
+ #maximum_unused_service_ticket_lifetime: 300
574
+
575
+ # The server must periodically delete old tickets (login tickets, service tickets
576
+ # proxy-granting tickets, and ticket-granting tickets) to prevent buildup of
577
+ # stale data. This effectively limits the maximum length of a CAS session to
578
+ # the lifetime given here (in seconds). (Defaults to 48 hours)
579
+ #
580
+ # Note that this limit is not enforced on the client side; it refers only to the
581
+ # the maximum lifetime of tickets on the CAS server.
582
+
583
+ #maximum_session_lifetime: 172800
584
+
585
+
586
+ # If you want the usernames entered on the login page to be automatically
587
+ # downcased (converted to lowercase), enable the following option. When this
588
+ # option is set to true, if the user enters "JSmith" as their username, the
589
+ # system will automatically
590
+ # convert this to "jsmith".
591
+
592
+ #downcase_username: true
data/config/unicorn.rb ADDED
@@ -0,0 +1,88 @@
1
+ # Sample configuration file for Unicorn (not Rack)
2
+ #
3
+ # See http://unicorn.bogomips.org/Unicorn/Configurator.html for complete
4
+ # documentation.
5
+ SINATRA_ROOT = `pwd`.strip
6
+
7
+ # Use at least one worker per core if you're on a dedicated server,
8
+ # more will usually help for _short_ waits on databases/caches.
9
+ worker_processes 3
10
+
11
+ # Help ensure your application will always spawn in the symlinked
12
+ # "current" directory that Capistrano sets up.
13
+ working_directory SINATRA_ROOT # available in 0.94.0+
14
+
15
+ # listen on both a Unix domain socket and a TCP port,
16
+ # we use a shorter backlog for quicker failover when busy
17
+ # listen "/tmp/.sock", :backlog => 64
18
+ listen 18889, :tcp_nopush => true
19
+
20
+ # nuke workers after 30 seconds instead of 60 seconds (the default)
21
+ timeout 30
22
+
23
+ # feel free to point this anywhere accessible on the filesystem
24
+
25
+ pid "#{SINATRA_ROOT}/tmp/pids/unicorn.pid"
26
+
27
+ # relative_path "/test_platform"
28
+ # some applications/frameworks log to stderr or stdout, so prevent
29
+ # them from going to /dev/null when daemonized here:
30
+ stderr_path "#{SINATRA_ROOT}/log/unicorn.stderr.log"
31
+ stdout_path "#{SINATRA_ROOT}/log/unicorn.stdout.log"
32
+
33
+ # combine REE with "preload_app true" for memory savings
34
+ # http://rubyenterpriseedition.com/faq.html#adapt_apps_for_cow
35
+ preload_app false
36
+ GC.respond_to?(:copy_on_write_friendly=) and
37
+ GC.copy_on_write_friendly = true
38
+
39
+ before_fork do |server, worker|
40
+ # the following is highly recomended for Rails + "preload_app true"
41
+ # as there's no need for the master process to hold a connection
42
+ # defined?(ActiveRecord::Base) and
43
+ # ActiveRecord::Base.connection.disconnect!
44
+
45
+ # The following is only recommended for memory/DB-constrained
46
+ # installations. It is not needed if your system can house
47
+ # twice as many worker_processes as you have configured.
48
+ #
49
+ # # This allows a new master process to incrementally
50
+ # # phase out the old master process with SIGTTOU to avoid a
51
+ # # thundering herd (especially in the "preload_app false" case)
52
+ # # when doing a transparent upgrade. The last worker spawned
53
+ # # will then kill off the old master process with a SIGQUIT.
54
+ old_pid = "#{server.config[:pid]}.oldbin"
55
+
56
+ puts 'pid:'
57
+ puts '-------------------'
58
+ puts server.pid
59
+ puts old_pid
60
+ puts '---------------------'
61
+
62
+ if old_pid != server.pid
63
+ begin
64
+ sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
65
+ Process.kill(sig, File.read(old_pid).to_i)
66
+ rescue Errno::ENOENT, Errno::ESRCH
67
+ end
68
+ end
69
+ #
70
+ # # *optionally* throttle the master from forking too quickly by sleeping
71
+ sleep 1
72
+ end
73
+
74
+ after_fork do |server, worker|
75
+ # per-process listener ports for debugging/admin/migrations
76
+ # addr = "127.0.0.1:#{9293 + worker.nr}"
77
+ # server.listen(addr, :tries => -1, :delay => 5, :tcp_nopush => true)
78
+
79
+ # the following is *required* for Rails + "preload_app true",
80
+ # defined?(ActiveRecord::Base) and
81
+ # ActiveRecord::Base.establish_connection
82
+
83
+ # if preload_app is true, then you may also want to check and
84
+ # restart any other shared sockets/descriptors such as Memcached,
85
+ # and Redis. TokyoCabinet file handles are safe to reuse
86
+ # between any number of forked children (assuming your kernel
87
+ # correctly implements pread()/pwrite() system calls)
88
+ end
data/config.ru ADDED
@@ -0,0 +1,11 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ $:.unshift "#{File.dirname(__FILE__)}/lib"
5
+ require "casserver"
6
+
7
+ use Rack::ShowExceptions
8
+ use Rack::Runtime
9
+ use Rack::CommonLogger
10
+
11
+ run CASServer::Server.new
@@ -0,0 +1,47 @@
1
+ class CreateInitialStructure < ActiveRecord::Migration
2
+ def self.up
3
+ # Oracle table names cannot exceed 30 chars...
4
+ # See http://code.google.com/p/rubycas-server/issues/detail?id=15
5
+ create_table 'casserver_lt', :force => true do |t|
6
+ t.string 'ticket', :null => false
7
+ t.timestamp 'created_on', :null => false
8
+ t.datetime 'consumed', :null => true
9
+ t.string 'client_hostname', :null => false
10
+ end
11
+
12
+ create_table 'casserver_st', :force => true do |t|
13
+ t.string 'ticket', :null => false
14
+ t.text 'service', :null => false
15
+ t.timestamp 'created_on', :null => false
16
+ t.datetime 'consumed', :null => true
17
+ t.string 'client_hostname', :null => false
18
+ t.string 'username', :null => false
19
+ t.string 'type', :null => false
20
+ t.integer 'granted_by_pgt_id', :null => true
21
+ t.integer 'granted_by_tgt_id', :null => true
22
+ end
23
+
24
+ create_table 'casserver_tgt', :force => true do |t|
25
+ t.string 'ticket', :null => false
26
+ t.timestamp 'created_on', :null => false
27
+ t.string 'client_hostname', :null => false
28
+ t.string 'username', :null => false
29
+ t.text 'extra_attributes', :null => true
30
+ end
31
+
32
+ create_table 'casserver_pgt', :force => true do |t|
33
+ t.string 'ticket', :null => false
34
+ t.timestamp 'created_on', :null => false
35
+ t.string 'client_hostname', :null => false
36
+ t.string 'iou', :null => false
37
+ t.integer 'service_ticket_id', :null => false
38
+ end
39
+ end # self.up
40
+
41
+ def self.down
42
+ drop_table 'casserver_pgt'
43
+ drop_table 'casserver_tgt'
44
+ drop_table 'casserver_st'
45
+ drop_table 'casserver_lt'
46
+ end # self.down
47
+ end
@@ -25,9 +25,8 @@ module CASServer
25
25
  class Identity < ActiveResource::Base
26
26
 
27
27
  # define method_name accessor
28
- cattr_accessor(:method_name) do
29
- :authenticate # default value
30
- end
28
+ cattr_accessor(:method_name)
29
+ self.method_name = :authenticate
31
30
 
32
31
  def self.method_type
33
32
  @@method_type ||= :post
@@ -82,6 +81,9 @@ module CASServer
82
81
  extract_extra_attributes(result) if result
83
82
  !!result
84
83
  rescue ::ActiveResource::ConnectionError => e
84
+ if e.response.blank? # band-aid for ARes 2.3.x -- craps out if to_s is called without a response
85
+ e = e.class.to_s
86
+ end
85
87
  $LOG.warn("Error during authentication: #{e}")
86
88
  false
87
89
  end
@@ -3,6 +3,7 @@ require 'casserver/authenticators/sql'
3
3
  require 'digest/sha1'
4
4
  require 'digest/sha2'
5
5
  require 'crypt-isaac'
6
+ require 'bcrypt'
6
7
 
7
8
  # This is a more secure version of the SQL authenticator. Passwords are encrypted
8
9
  # rather than being stored in plain text.
@@ -8,13 +8,19 @@ $LOG ||= Logger.new(STDOUT)
8
8
 
9
9
  module CASServer
10
10
  class Server < Sinatra::Base
11
- CONFIG_FILE = ENV['CONFIG_FILE'] || "/etc/rubycas-server/config.yml"
11
+ if ENV['CONFIG_FILE']
12
+ CONFIG_FILE = ENV['CONFIG_FILE']
13
+ elsif !(c_file = File.dirname(__FILE__) + "/../../config.yml").nil? && File.exist?(c_file)
14
+ CONFIG_FILE = c_file
15
+ else
16
+ CONFIG_FILE = "/etc/rubycas-server/config.yml"
17
+ end
12
18
 
13
19
  include CASServer::CAS # CAS protocol helpers
14
20
  include Localization
15
21
 
16
22
  set :app_file, __FILE__
17
- set :public, Proc.new { settings.config[:public_dir] || File.join(root, "..", "..", "public") }
23
+ set :public_folder, Proc.new { settings.config[:public_dir] || File.join(root, "..", "..", "public") }
18
24
 
19
25
  config = HashWithIndifferentAccess.new(
20
26
  :maximum_unused_login_ticket_lifetime => 5.minutes,
@@ -32,7 +38,7 @@ module CASServer
32
38
  # Strip the config.uri_path from the request.path_info...
33
39
  # FIXME: do we really need to override all of Sinatra's #static! to make this happen?
34
40
  def static!
35
- return if (public_dir = settings.public).nil?
41
+ return if (public_dir = settings.public_folder).nil?
36
42
  public_dir = File.expand_path(public_dir)
37
43
 
38
44
  path = File.expand_path(public_dir + unescape(request.path_info.gsub(/^#{settings.config[:uri_path]}/,'')))
@@ -627,6 +633,7 @@ module CASServer
627
633
  @service = clean_service_url(params['service'])
628
634
  @ticket = params['ticket']
629
635
  # optional
636
+ @pgt_url = params['pgtUrl']
630
637
  @renew = params['renew']
631
638
 
632
639
  st, @error = validate_service_ticket(@service, @ticket)
@@ -742,4 +749,3 @@ module CASServer
742
749
  end
743
750
  end
744
751
  end
745
-
@@ -1,7 +1,6 @@
1
-
2
1
  $gemspec = Gem::Specification.new do |s|
3
2
  s.name = 'rubycas-server'
4
- s.version = '1.0'
3
+ s.version = '1.0.1'
5
4
  s.authors = ["Matt Zukowski"]
6
5
  s.email = ["matt@zukowski.ca"]
7
6
  s.homepage = 'http://code.google.com/p/rubycas-server/'
@@ -11,8 +10,8 @@ $gemspec = Gem::Specification.new do |s|
11
10
 
12
11
  s.files = [
13
12
  "CHANGELOG", "LICENSE", "README.md", "Rakefile", "setup.rb",
14
- "bin/*", "db/*", "lib/**/*.rb", "public/**/*", "po/**/*", "mo/**/*", "resources/*.*",
15
- "tasks/**/*.rake", "vendor/**/*", "script/*", "lib/**/*.erb", "lib/**/*.builder",
13
+ "bin/*", "db/**/*", "lib/**/*.rb", "public/**/*", "po/**/*", "mo/**/*", "resources/*.*",
14
+ "config.ru", "config/**/*", "tasks/**/*.rake", "vendor/**/*", "script/*", "lib/**/*.erb", "lib/**/*.builder",
16
15
  "Gemfile", "rubycas-server.gemspec"
17
16
  ].map{|p| Dir[p]}.flatten
18
17
 
@@ -25,17 +24,18 @@ $gemspec = Gem::Specification.new do |s|
25
24
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.md"]
26
25
 
27
26
  s.has_rdoc = true
28
- s.post_install_message = %q{
27
+ s.post_install_message = "
29
28
  For more information on RubyCAS-Server, see http://code.google.com/p/rubycas-server
30
29
 
31
30
  If you plan on using RubyCAS-Server with languages other than English, please cd into the
32
- RubyCAS-Server installation directory (where the gem is installed) and type `rake localization:mo`
31
+ RubyCAS-Server installation directory (where this gem is installed, for example:
32
+ '/usr/lib/ruby/gems/1.x/gems/rubycas-server-1.x.x/') and type `rake localization:mo`
33
33
  to build the LOCALE_LC files.
34
34
 
35
- }
35
+ "
36
36
 
37
- s.add_dependency("activerecord", "~> 2.3.6")
38
- s.add_dependency("activesupport", "~> 2.3.6")
37
+ s.add_dependency("activerecord", ">= 2.3.12", "< 3.1")
38
+ s.add_dependency("activesupport", ">= 2.3.12", "< 3.1")
39
39
  s.add_dependency("sinatra", "~> 1.0")
40
40
  s.add_dependency("gettext", "~> 2.1.0")
41
41
  s.add_dependency("crypt-isaac", "~> 0.9.1")
@@ -48,7 +48,7 @@ to build the LOCALE_LC files.
48
48
 
49
49
  # for authenticator specs
50
50
  s.add_development_dependency("net-ldap", "~> 0.1.1")
51
- s.add_development_dependency("activeresource", "~> 2.3.6")
51
+ s.add_development_dependency("activeresource", ">= 2.3.12", "< 3.1")
52
52
 
53
53
  s.rdoc_options = [
54
54
  '--quiet', '--title', 'RubyCAS-Server Documentation', '--opname',
metadata CHANGED
@@ -1,222 +1,177 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rubycas-server
3
- version: !ruby/object:Gem::Version
4
- hash: 15
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 0
9
- version: "1.0"
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Matt Zukowski
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-08-03 00:00:00 Z
18
- dependencies:
19
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-22 00:00:00.000000000 -05:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
20
16
  name: activerecord
21
- prerelease: false
22
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &79179110 !ruby/object:Gem::Requirement
23
18
  none: false
24
- requirements:
25
- - - ~>
26
- - !ruby/object:Gem::Version
27
- hash: 15
28
- segments:
29
- - 2
30
- - 3
31
- - 6
32
- version: 2.3.6
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 2.3.12
23
+ - - <
24
+ - !ruby/object:Gem::Version
25
+ version: '3.1'
33
26
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: activesupport
37
27
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
28
+ version_requirements: *79179110
29
+ - !ruby/object:Gem::Dependency
30
+ name: activesupport
31
+ requirement: &79178640 !ruby/object:Gem::Requirement
39
32
  none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- hash: 15
44
- segments:
45
- - 2
46
- - 3
47
- - 6
48
- version: 2.3.6
33
+ requirements:
34
+ - - ! '>='
35
+ - !ruby/object:Gem::Version
36
+ version: 2.3.12
37
+ - - <
38
+ - !ruby/object:Gem::Version
39
+ version: '3.1'
49
40
  type: :runtime
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: sinatra
53
41
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
42
+ version_requirements: *79178640
43
+ - !ruby/object:Gem::Dependency
44
+ name: sinatra
45
+ requirement: &79178260 !ruby/object:Gem::Requirement
55
46
  none: false
56
- requirements:
47
+ requirements:
57
48
  - - ~>
58
- - !ruby/object:Gem::Version
59
- hash: 15
60
- segments:
61
- - 1
62
- - 0
63
- version: "1.0"
49
+ - !ruby/object:Gem::Version
50
+ version: '1.0'
64
51
  type: :runtime
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- name: gettext
68
52
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
53
+ version_requirements: *79178260
54
+ - !ruby/object:Gem::Dependency
55
+ name: gettext
56
+ requirement: &79178020 !ruby/object:Gem::Requirement
70
57
  none: false
71
- requirements:
58
+ requirements:
72
59
  - - ~>
73
- - !ruby/object:Gem::Version
74
- hash: 11
75
- segments:
76
- - 2
77
- - 1
78
- - 0
60
+ - !ruby/object:Gem::Version
79
61
  version: 2.1.0
80
62
  type: :runtime
81
- version_requirements: *id004
82
- - !ruby/object:Gem::Dependency
83
- name: crypt-isaac
84
63
  prerelease: false
85
- requirement: &id005 !ruby/object:Gem::Requirement
64
+ version_requirements: *79178020
65
+ - !ruby/object:Gem::Dependency
66
+ name: crypt-isaac
67
+ requirement: &79177770 !ruby/object:Gem::Requirement
86
68
  none: false
87
- requirements:
69
+ requirements:
88
70
  - - ~>
89
- - !ruby/object:Gem::Version
90
- hash: 57
91
- segments:
92
- - 0
93
- - 9
94
- - 1
71
+ - !ruby/object:Gem::Version
95
72
  version: 0.9.1
96
73
  type: :runtime
97
- version_requirements: *id005
98
- - !ruby/object:Gem::Dependency
99
- name: rack-test
100
74
  prerelease: false
101
- requirement: &id006 !ruby/object:Gem::Requirement
75
+ version_requirements: *79177770
76
+ - !ruby/object:Gem::Dependency
77
+ name: rack-test
78
+ requirement: &79177550 !ruby/object:Gem::Requirement
102
79
  none: false
103
- requirements:
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- hash: 3
107
- segments:
108
- - 0
109
- version: "0"
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
110
84
  type: :development
111
- version_requirements: *id006
112
- - !ruby/object:Gem::Dependency
113
- name: capybara
114
85
  prerelease: false
115
- requirement: &id007 !ruby/object:Gem::Requirement
86
+ version_requirements: *79177550
87
+ - !ruby/object:Gem::Dependency
88
+ name: capybara
89
+ requirement: &79177260 !ruby/object:Gem::Requirement
116
90
  none: false
117
- requirements:
118
- - - ">="
119
- - !ruby/object:Gem::Version
120
- hash: 3
121
- segments:
122
- - 0
123
- version: "0"
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
124
95
  type: :development
125
- version_requirements: *id007
126
- - !ruby/object:Gem::Dependency
127
- name: rspec
128
96
  prerelease: false
129
- requirement: &id008 !ruby/object:Gem::Requirement
97
+ version_requirements: *79177260
98
+ - !ruby/object:Gem::Dependency
99
+ name: rspec
100
+ requirement: &79177020 !ruby/object:Gem::Requirement
130
101
  none: false
131
- requirements:
132
- - - ">="
133
- - !ruby/object:Gem::Version
134
- hash: 3
135
- segments:
136
- - 0
137
- version: "0"
102
+ requirements:
103
+ - - ! '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
138
106
  type: :development
139
- version_requirements: *id008
140
- - !ruby/object:Gem::Dependency
141
- name: rspec-core
142
107
  prerelease: false
143
- requirement: &id009 !ruby/object:Gem::Requirement
108
+ version_requirements: *79177020
109
+ - !ruby/object:Gem::Dependency
110
+ name: rspec-core
111
+ requirement: &79176750 !ruby/object:Gem::Requirement
144
112
  none: false
145
- requirements:
146
- - - ">="
147
- - !ruby/object:Gem::Version
148
- hash: 3
149
- segments:
150
- - 0
151
- version: "0"
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
152
117
  type: :development
153
- version_requirements: *id009
154
- - !ruby/object:Gem::Dependency
155
- name: sqlite3
156
118
  prerelease: false
157
- requirement: &id010 !ruby/object:Gem::Requirement
119
+ version_requirements: *79176750
120
+ - !ruby/object:Gem::Dependency
121
+ name: sqlite3
122
+ requirement: &79162830 !ruby/object:Gem::Requirement
158
123
  none: false
159
- requirements:
124
+ requirements:
160
125
  - - ~>
161
- - !ruby/object:Gem::Version
162
- hash: 25
163
- segments:
164
- - 1
165
- - 3
166
- - 1
126
+ - !ruby/object:Gem::Version
167
127
  version: 1.3.1
168
128
  type: :development
169
- version_requirements: *id010
170
- - !ruby/object:Gem::Dependency
171
- name: net-ldap
172
129
  prerelease: false
173
- requirement: &id011 !ruby/object:Gem::Requirement
130
+ version_requirements: *79162830
131
+ - !ruby/object:Gem::Dependency
132
+ name: net-ldap
133
+ requirement: &79162510 !ruby/object:Gem::Requirement
174
134
  none: false
175
- requirements:
135
+ requirements:
176
136
  - - ~>
177
- - !ruby/object:Gem::Version
178
- hash: 25
179
- segments:
180
- - 0
181
- - 1
182
- - 1
137
+ - !ruby/object:Gem::Version
183
138
  version: 0.1.1
184
139
  type: :development
185
- version_requirements: *id011
186
- - !ruby/object:Gem::Dependency
187
- name: activeresource
188
140
  prerelease: false
189
- requirement: &id012 !ruby/object:Gem::Requirement
141
+ version_requirements: *79162510
142
+ - !ruby/object:Gem::Dependency
143
+ name: activeresource
144
+ requirement: &79162220 !ruby/object:Gem::Requirement
190
145
  none: false
191
- requirements:
192
- - - ~>
193
- - !ruby/object:Gem::Version
194
- hash: 15
195
- segments:
196
- - 2
197
- - 3
198
- - 6
199
- version: 2.3.6
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: 2.3.12
150
+ - - <
151
+ - !ruby/object:Gem::Version
152
+ version: '3.1'
200
153
  type: :development
201
- version_requirements: *id012
202
- description: Provides single sign-on authentication for web applications using the CAS protocol.
203
- email:
154
+ prerelease: false
155
+ version_requirements: *79162220
156
+ description: Provides single sign-on authentication for web applications using the
157
+ CAS protocol.
158
+ email:
204
159
  - matt@zukowski.ca
205
- executables:
160
+ executables:
206
161
  - rubycas-server
207
162
  extensions: []
208
-
209
- extra_rdoc_files:
163
+ extra_rdoc_files:
210
164
  - CHANGELOG
211
165
  - LICENSE
212
166
  - README.md
213
- files:
167
+ files:
214
168
  - CHANGELOG
215
169
  - LICENSE
216
170
  - README.md
217
171
  - Rakefile
218
172
  - setup.rb
219
173
  - bin/rubycas-server
174
+ - db/migrate/001_create_initial_structure.rb
220
175
  - lib/casserver.rb
221
176
  - lib/casserver/localization.rb
222
177
  - lib/casserver/utils.rb
@@ -266,6 +221,9 @@ files:
266
221
  - po/pl_PL/rubycas-server.po
267
222
  - po/fr_FR/rubycas-server.po
268
223
  - resources/init.d.sh
224
+ - config.ru
225
+ - config/unicorn.rb
226
+ - config/config.example.yml
269
227
  - tasks/spec.rake
270
228
  - tasks/localization.rake
271
229
  - tasks/bundler.rake
@@ -288,18 +246,15 @@ files:
288
246
  - spec/spec.opts
289
247
  - spec/spec_helper.rb
290
248
  - spec/utils_spec.rb
249
+ has_rdoc: true
291
250
  homepage: http://code.google.com/p/rubycas-server/
292
251
  licenses: []
293
-
294
- post_install_message: |+
295
-
296
- For more information on RubyCAS-Server, see http://code.google.com/p/rubycas-server
297
-
298
- If you plan on using RubyCAS-Server with languages other than English, please cd into the
299
- RubyCAS-Server installation directory (where the gem is installed) and type `rake localization:mo`
300
- to build the LOCALE_LC files.
301
-
302
- rdoc_options:
252
+ post_install_message: ! "\nFor more information on RubyCAS-Server, see http://code.google.com/p/rubycas-server\n\nIf
253
+ you plan on using RubyCAS-Server with languages other than English, please cd into
254
+ the\nRubyCAS-Server installation directory (where this gem is installed, for example:
255
+ \n'/usr/lib/ruby/gems/1.x/gems/rubycas-server-1.x.x/') and type `rake localization:mo`\nto
256
+ build the LOCALE_LC files.\n\n"
257
+ rdoc_options:
303
258
  - --quiet
304
259
  - --title
305
260
  - RubyCAS-Server Documentation
@@ -309,34 +264,28 @@ rdoc_options:
309
264
  - --main
310
265
  - README.md
311
266
  - --inline-source
312
- require_paths:
267
+ require_paths:
313
268
  - lib
314
- required_ruby_version: !ruby/object:Gem::Requirement
269
+ required_ruby_version: !ruby/object:Gem::Requirement
315
270
  none: false
316
- requirements:
317
- - - ">="
318
- - !ruby/object:Gem::Version
319
- hash: 3
320
- segments:
321
- - 0
322
- version: "0"
323
- required_rubygems_version: !ruby/object:Gem::Requirement
271
+ requirements:
272
+ - - ! '>='
273
+ - !ruby/object:Gem::Version
274
+ version: '0'
275
+ required_rubygems_version: !ruby/object:Gem::Requirement
324
276
  none: false
325
- requirements:
326
- - - ">="
327
- - !ruby/object:Gem::Version
328
- hash: 3
329
- segments:
330
- - 0
331
- version: "0"
277
+ requirements:
278
+ - - ! '>='
279
+ - !ruby/object:Gem::Version
280
+ version: '0'
332
281
  requirements: []
333
-
334
282
  rubyforge_project:
335
- rubygems_version: 1.8.5
283
+ rubygems_version: 1.6.2
336
284
  signing_key:
337
285
  specification_version: 3
338
- summary: Provides single sign-on authentication for web applications using the CAS protocol.
339
- test_files:
286
+ summary: Provides single sign-on authentication for web applications using the CAS
287
+ protocol.
288
+ test_files:
340
289
  - spec/alt_config.yml
341
290
  - spec/authenticators/active_resource_spec.rb
342
291
  - spec/authenticators/ldap_spec.rb