rubius 0.0.1 → 0.0.2
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/.autotest +12 -0
- data/Gemfile +1 -11
- data/README.rdoc +53 -6
- data/Rakefile +10 -7
- data/VERSION +1 -1
- data/lib/rubius/dictionary.rb +14 -15
- data/lib/rubius/packet.rb +1 -1
- data/rubius.gemspec +127 -0
- data/test/helper.rb +38 -0
- data/test/test_dictionary.rb +22 -0
- data/test/test_string.rb +40 -0
- metadata +217 -15
- data/test/test_rubius.rb +0 -7
data/.autotest
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
# adds exceptions from .gitignore file, please modify exceptions there!
|
4
|
+
imported_exceptions = IO.readlines('.gitignore').inject([]) do |acc, line|
|
5
|
+
acc << line.strip if line.to_s[0] != '#' && line.strip != ''; acc
|
6
|
+
end
|
7
|
+
|
8
|
+
Autotest.add_hook :initialize do |autotest|
|
9
|
+
imported_exceptions.each do |exception|
|
10
|
+
autotest.add_exception(exception)
|
11
|
+
end
|
12
|
+
end
|
data/Gemfile
CHANGED
@@ -1,13 +1,3 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
5
2
|
|
6
|
-
|
7
|
-
# Include everything needed to run rake, tests, features, etc.
|
8
|
-
group :development do
|
9
|
-
gem "shoulda", ">= 0"
|
10
|
-
gem "bundler", "~> 1.0.0"
|
11
|
-
gem "jeweler", "~> 1.5.2"
|
12
|
-
gem "rcov", ">= 0"
|
13
|
-
end
|
3
|
+
gemspec
|
data/README.rdoc
CHANGED
@@ -1,8 +1,57 @@
|
|
1
|
-
=
|
1
|
+
= Rubius: A simple native Ruby RADIUS authentication gem
|
2
2
|
|
3
|
-
|
3
|
+
Rubius provides a simple interface to RADIUS authentication
|
4
4
|
|
5
|
-
==
|
5
|
+
== Requirements
|
6
|
+
|
7
|
+
* Ruby >= 1.9.2 (not tested with previous versions)
|
8
|
+
* Rails >= 3.0.6 (not tested with previous versions)
|
9
|
+
|
10
|
+
Rubius works with the following RADIUS servers:
|
11
|
+
|
12
|
+
* FreeRADIUS 1.1.8
|
13
|
+
|
14
|
+
== Installation
|
15
|
+
|
16
|
+
Include the gem in your Gemfile:
|
17
|
+
|
18
|
+
gem "rubius"
|
19
|
+
|
20
|
+
And then run bundler:
|
21
|
+
|
22
|
+
$ bundle install
|
23
|
+
|
24
|
+
Or install using rubygems
|
25
|
+
|
26
|
+
$ gem install rubius
|
27
|
+
|
28
|
+
You can then use it in your programs:
|
29
|
+
|
30
|
+
require 'rubius'
|
31
|
+
|
32
|
+
Another way would be to clone the git repository
|
33
|
+
|
34
|
+
$ git clone git://github.com/rahvin/rubius.git
|
35
|
+
|
36
|
+
And then install the gem
|
37
|
+
|
38
|
+
$ cd rubius
|
39
|
+
$ rake install
|
40
|
+
|
41
|
+
== Quick Start
|
42
|
+
|
43
|
+
$ cd /my/rails/app
|
44
|
+
$ rails generate rubius:install
|
45
|
+
|
46
|
+
This will create an initial 'config/rubius.yml' configuration file and a 'config/radius-dictionary' RADIUS dictionary file, it will also create an initializer in 'config/initializers/rubius.rb' to load Rubius when your application starts up.
|
47
|
+
|
48
|
+
Now configure your RADIUS server properties in 'config/rubius.yml'. When you're done, you can authenticate with:
|
49
|
+
|
50
|
+
if Rubius::Authenticator.authenticate('username', 'password')
|
51
|
+
# woohoo
|
52
|
+
end
|
53
|
+
|
54
|
+
== Contributing to Rubius
|
6
55
|
|
7
56
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
8
57
|
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
@@ -14,6 +63,4 @@ A simply ruby RADIUS authentication gem
|
|
14
63
|
|
15
64
|
== Copyright
|
16
65
|
|
17
|
-
Copyright (c) 2011 Ralph Rooding. See LICENSE.txt for
|
18
|
-
further details.
|
19
|
-
|
66
|
+
Copyright (c) 2011 Ralph Rooding. See LICENSE.txt for further details.
|
data/Rakefile
CHANGED
@@ -15,14 +15,17 @@ Jeweler::Tasks.new do |gem|
|
|
15
15
|
gem.name = "rubius"
|
16
16
|
gem.homepage = "http://github.com/rahvin/rubius"
|
17
17
|
gem.license = "MIT"
|
18
|
-
gem.summary = %Q{A
|
19
|
-
gem.description = %Q{
|
18
|
+
gem.summary = %Q{A simple ruby RADIUS authentication gem}
|
19
|
+
gem.description = %Q{Rubius provides a simple interface to RADIUS authentication}
|
20
20
|
gem.email = "ralph@izerion.com"
|
21
21
|
gem.authors = ["Ralph Rooding"]
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
|
23
|
+
gem.add_development_dependency 'bundler', '~> 1.0.0'
|
24
|
+
gem.add_development_dependency 'shoulda'
|
25
|
+
gem.add_development_dependency 'mocha', '~> 0.9.12'
|
26
|
+
gem.add_development_dependency 'jeweler', '~> 1.5.2'
|
27
|
+
gem.add_development_dependency 'simplecov', '>= 0.4.0'
|
28
|
+
gem.add_development_dependency 'autotest-standalone', '~> 4.5.5'
|
26
29
|
end
|
27
30
|
Jeweler::RubygemsDotOrgTasks.new
|
28
31
|
|
@@ -47,7 +50,7 @@ Rake::RDocTask.new do |rdoc|
|
|
47
50
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
48
51
|
|
49
52
|
rdoc.rdoc_dir = 'rdoc'
|
50
|
-
rdoc.title = "
|
53
|
+
rdoc.title = "Rubius #{version}"
|
51
54
|
rdoc.rdoc_files.include('README*')
|
52
55
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
53
56
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/lib/rubius/dictionary.rb
CHANGED
@@ -3,13 +3,11 @@ module Rubius
|
|
3
3
|
VENDOR = 'VENDOR'
|
4
4
|
ATTRIBUTE = 'ATTRIBUTE'
|
5
5
|
VALUE = 'VALUE'
|
6
|
-
NAME = 'NAME'
|
7
|
-
TYPE = 'TYPE'
|
8
6
|
DEFAULT_VENDOR = 0
|
9
7
|
|
10
8
|
def initialize
|
11
9
|
@dictionary = Hash.new
|
12
|
-
@dictionary[DEFAULT_VENDOR] = {
|
10
|
+
@dictionary[DEFAULT_VENDOR] = {:name => ''}
|
13
11
|
end
|
14
12
|
|
15
13
|
def load(dictionary_file)
|
@@ -25,33 +23,34 @@ module Rubius
|
|
25
23
|
when VENDOR
|
26
24
|
vendor_id = tokens[2].to_i
|
27
25
|
vendor_name = tokens[1].strip
|
28
|
-
@dictionary[vendor_id] ||= {
|
26
|
+
@dictionary[vendor_id] ||= {:name => vendor_name}
|
29
27
|
when ATTRIBUTE
|
30
|
-
@dictionary[vendor_id][tokens[2].to_i] = {
|
28
|
+
@dictionary[vendor_id][tokens[2].to_i] = {:name => tokens[1].strip, :type => tokens[3].strip}
|
31
29
|
when VALUE
|
32
30
|
@dictionary[vendor_id][tokens[1]] = {tokens[2].strip => tokens[3].to_i}
|
33
31
|
end
|
34
32
|
end
|
35
33
|
end
|
36
34
|
|
37
|
-
def vendor_name(vendor_id)
|
38
|
-
@dictionary[vendor_id][
|
35
|
+
def vendor_name(vendor_id = DEFAULT_VENDOR)
|
36
|
+
@dictionary[vendor_id][:name]
|
39
37
|
end
|
40
38
|
|
41
|
-
def
|
42
|
-
|
39
|
+
def attribute_name(attr_id, vendor_id = DEFAULT_VENDOR)
|
40
|
+
attribute(attr_id, vendor_id)[:name] rescue nil
|
43
41
|
end
|
44
42
|
|
45
|
-
def
|
46
|
-
attribute(
|
43
|
+
def attribute_type(attr_id, vendor_id = DEFAULT_VENDOR)
|
44
|
+
attribute(attr_id, vendor_id)[:type] rescue nil
|
47
45
|
end
|
48
46
|
|
49
|
-
def
|
50
|
-
|
47
|
+
def attribute_id(attr_name, vendor_id = DEFAULT_VENDOR)
|
48
|
+
@dictionary[vendor_id].reject{|k,v| !v.is_a?(Hash) || v[:name]!=attr_name}.flatten.first
|
51
49
|
end
|
52
50
|
|
53
|
-
|
54
|
-
|
51
|
+
private
|
52
|
+
def attribute(attr_id, vendor_id)
|
53
|
+
@dictionary[vendor_id][attr_id] rescue nil
|
55
54
|
end
|
56
55
|
end
|
57
56
|
end
|
data/lib/rubius/packet.rb
CHANGED
@@ -125,7 +125,7 @@ module Rubius
|
|
125
125
|
end
|
126
126
|
|
127
127
|
def set_vendor_attribute(vendor_id, attr_id, value)
|
128
|
-
attr_name = @dictionary.attribute_name(
|
128
|
+
attr_name = @dictionary.attribute_name(attr_id, vendor_id)
|
129
129
|
set_attribute(attr_name, value)
|
130
130
|
end
|
131
131
|
|
data/rubius.gemspec
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{rubius}
|
8
|
+
s.version = "0.0.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Ralph Rooding"]
|
12
|
+
s.date = %q{2011-04-20}
|
13
|
+
s.description = %q{Rubius provides a simple interface to RADIUS authentication}
|
14
|
+
s.email = %q{ralph@izerion.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".autotest",
|
21
|
+
"Gemfile",
|
22
|
+
"LICENSE.txt",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"lib/generators/rubius/install_generator.rb",
|
27
|
+
"lib/generators/rubius/templates/radius-dictionary",
|
28
|
+
"lib/generators/rubius/templates/rubius.yml",
|
29
|
+
"lib/generators/rubius/templates/rubius_initializer.rb",
|
30
|
+
"lib/rubius.rb",
|
31
|
+
"lib/rubius/authenticator.rb",
|
32
|
+
"lib/rubius/dictionary.rb",
|
33
|
+
"lib/rubius/packet.rb",
|
34
|
+
"lib/rubius/rails.rb",
|
35
|
+
"lib/rubius/string.rb",
|
36
|
+
"rubius.gemspec",
|
37
|
+
"test/helper.rb",
|
38
|
+
"test/test_dictionary.rb",
|
39
|
+
"test/test_string.rb"
|
40
|
+
]
|
41
|
+
s.homepage = %q{http://github.com/rahvin/rubius}
|
42
|
+
s.licenses = ["MIT"]
|
43
|
+
s.require_paths = ["lib"]
|
44
|
+
s.rubygems_version = %q{1.5.2}
|
45
|
+
s.summary = %q{A simple ruby RADIUS authentication gem}
|
46
|
+
s.test_files = [
|
47
|
+
"test/helper.rb",
|
48
|
+
"test/test_dictionary.rb",
|
49
|
+
"test/test_string.rb"
|
50
|
+
]
|
51
|
+
|
52
|
+
if s.respond_to? :specification_version then
|
53
|
+
s.specification_version = 3
|
54
|
+
|
55
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
56
|
+
s.add_runtime_dependency(%q<rubius>, [">= 0"])
|
57
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
58
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
59
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
60
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
61
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
62
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
63
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
64
|
+
s.add_development_dependency(%q<simplecov>, [">= 0.4.0"])
|
65
|
+
s.add_development_dependency(%q<autotest-standalone>, ["~> 4.5.5"])
|
66
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
67
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
68
|
+
s.add_development_dependency(%q<mocha>, ["~> 0.9.12"])
|
69
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
70
|
+
s.add_development_dependency(%q<simplecov>, [">= 0.4.0"])
|
71
|
+
s.add_development_dependency(%q<autotest-standalone>, ["~> 4.5.5"])
|
72
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
73
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
74
|
+
s.add_development_dependency(%q<mocha>, ["~> 0.9.12"])
|
75
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
76
|
+
s.add_development_dependency(%q<simplecov>, [">= 0.4.0"])
|
77
|
+
s.add_development_dependency(%q<autotest-standalone>, ["~> 4.5.5"])
|
78
|
+
else
|
79
|
+
s.add_dependency(%q<rubius>, [">= 0"])
|
80
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
81
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
82
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
83
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
84
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
85
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
86
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
87
|
+
s.add_dependency(%q<simplecov>, [">= 0.4.0"])
|
88
|
+
s.add_dependency(%q<autotest-standalone>, ["~> 4.5.5"])
|
89
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
90
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
91
|
+
s.add_dependency(%q<mocha>, ["~> 0.9.12"])
|
92
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
93
|
+
s.add_dependency(%q<simplecov>, [">= 0.4.0"])
|
94
|
+
s.add_dependency(%q<autotest-standalone>, ["~> 4.5.5"])
|
95
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
96
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
97
|
+
s.add_dependency(%q<mocha>, ["~> 0.9.12"])
|
98
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
99
|
+
s.add_dependency(%q<simplecov>, [">= 0.4.0"])
|
100
|
+
s.add_dependency(%q<autotest-standalone>, ["~> 4.5.5"])
|
101
|
+
end
|
102
|
+
else
|
103
|
+
s.add_dependency(%q<rubius>, [">= 0"])
|
104
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
105
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
106
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
107
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
108
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
109
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
110
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
111
|
+
s.add_dependency(%q<simplecov>, [">= 0.4.0"])
|
112
|
+
s.add_dependency(%q<autotest-standalone>, ["~> 4.5.5"])
|
113
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
114
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
115
|
+
s.add_dependency(%q<mocha>, ["~> 0.9.12"])
|
116
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
117
|
+
s.add_dependency(%q<simplecov>, [">= 0.4.0"])
|
118
|
+
s.add_dependency(%q<autotest-standalone>, ["~> 4.5.5"])
|
119
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
120
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
121
|
+
s.add_dependency(%q<mocha>, ["~> 0.9.12"])
|
122
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
123
|
+
s.add_dependency(%q<simplecov>, [">= 0.4.0"])
|
124
|
+
s.add_dependency(%q<autotest-standalone>, ["~> 4.5.5"])
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
data/test/helper.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler'
|
3
|
+
require 'simplecov'
|
4
|
+
SimpleCov.start
|
3
5
|
begin
|
4
6
|
Bundler.setup(:default, :development)
|
5
7
|
rescue Bundler::BundlerError => e
|
@@ -9,6 +11,7 @@ rescue Bundler::BundlerError => e
|
|
9
11
|
end
|
10
12
|
require 'test/unit'
|
11
13
|
require 'shoulda'
|
14
|
+
require 'mocha'
|
12
15
|
|
13
16
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
17
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
@@ -16,3 +19,38 @@ require 'rubius'
|
|
16
19
|
|
17
20
|
class Test::Unit::TestCase
|
18
21
|
end
|
22
|
+
|
23
|
+
RADIUS_DICTIONARY = [
|
24
|
+
"# -*- text -*-",
|
25
|
+
"#",
|
26
|
+
"# Attributes and values defined in RFC 2865.",
|
27
|
+
"ATTRIBUTE User-Name 1 string",
|
28
|
+
"ATTRIBUTE User-Password 2 string encrypt=1",
|
29
|
+
"ATTRIBUTE Service-Type 6 integer",
|
30
|
+
"",
|
31
|
+
"# Values",
|
32
|
+
"VALUE Service-Type Login-User 1",
|
33
|
+
"VALUE Service-Type Framed-User 2",
|
34
|
+
"VALUE Service-Type Callback-Login-User 3",
|
35
|
+
"",
|
36
|
+
"# -*- text -*-",
|
37
|
+
"#",
|
38
|
+
"# dictionary.cisco",
|
39
|
+
"VENDOR Cisco 9",
|
40
|
+
"",
|
41
|
+
"BEGIN-VENDOR Cisco",
|
42
|
+
"",
|
43
|
+
"ATTRIBUTE Cisco-AVPair 1 string",
|
44
|
+
"ATTRIBUTE Cisco-NAS-Port 2 string",
|
45
|
+
"ATTRIBUTE Cisco-Disconnect-Cause 195 integer",
|
46
|
+
"",
|
47
|
+
"VALUE Cisco-Disconnect-Cause Unknown 2",
|
48
|
+
"VALUE Cisco-Disconnect-Cause CLID-Authentication-Failure 4",
|
49
|
+
"#",
|
50
|
+
"",
|
51
|
+
"VENDOR Juniper 2636",
|
52
|
+
"",
|
53
|
+
"BEGIN-VENDOR Juniper",
|
54
|
+
"",
|
55
|
+
"ATTRIBUTE Juniper-Local-User-Name 1 string"
|
56
|
+
]
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestDictionary < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@dictionary = Rubius::Dictionary.new
|
6
|
+
end
|
7
|
+
|
8
|
+
context "A Rubius::Dictionary" do
|
9
|
+
should "load and parse a RADIUS dictionary file" do
|
10
|
+
IO.stubs(:readlines).returns(RADIUS_DICTIONARY)
|
11
|
+
|
12
|
+
assert @dictionary.load("file")
|
13
|
+
|
14
|
+
assert_equal "Cisco", @dictionary.vendor_name(9)
|
15
|
+
assert_equal "Juniper", @dictionary.vendor_name(2636)
|
16
|
+
|
17
|
+
assert_equal "Service-Type", @dictionary.attribute_name(6)
|
18
|
+
assert_equal "string", @dictionary.attribute_type(2, 9)
|
19
|
+
assert_equal 1, @dictionary.attribute_id("Juniper-Local-User-Name", 2636)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/test/test_string.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestString < Test::Unit::TestCase
|
4
|
+
should "define a xor method" do
|
5
|
+
assert String.method_defined?(:xor)
|
6
|
+
end
|
7
|
+
|
8
|
+
should "return correct string when xor-ed with an empty string" do
|
9
|
+
str1 = "test string"
|
10
|
+
str2 = ""
|
11
|
+
|
12
|
+
result = str1.xor(str2)
|
13
|
+
assert_equal str1, result
|
14
|
+
|
15
|
+
result2 = result.xor(str2)
|
16
|
+
assert_equal str1, result2
|
17
|
+
end
|
18
|
+
|
19
|
+
should "return correct string when xor-ed with a longer string" do
|
20
|
+
str1 = "test string"
|
21
|
+
str2 = "longer test string"
|
22
|
+
|
23
|
+
result = str1.xor(str2)
|
24
|
+
assert_equal "\x18\n\x1D\x13E\x01T\x06\f\x1D\x13", result
|
25
|
+
|
26
|
+
result2 = result.xor(str2)
|
27
|
+
assert_equal str1, result2
|
28
|
+
end
|
29
|
+
|
30
|
+
should "return correct string when xor-ed with a shorter string" do
|
31
|
+
str1 = "test string"
|
32
|
+
str2 = "short s"
|
33
|
+
|
34
|
+
result = str1.xor(str2)
|
35
|
+
assert_equal "\a\r\x1C\x06TS\a\x01\x01\x01\x15", result
|
36
|
+
|
37
|
+
result2 = result.xor(str2)
|
38
|
+
assert_equal str1, result2
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rubius
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ralph Rooding
|
@@ -10,23 +10,34 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-20 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
|
-
name:
|
17
|
+
name: rubius
|
18
18
|
requirement: &id001 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: "0"
|
24
|
-
type: :
|
24
|
+
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: *id001
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: shoulda
|
29
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "0"
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: bundler
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
30
41
|
none: false
|
31
42
|
requirements:
|
32
43
|
- - ~>
|
@@ -34,10 +45,10 @@ dependencies:
|
|
34
45
|
version: 1.0.0
|
35
46
|
type: :development
|
36
47
|
prerelease: false
|
37
|
-
version_requirements: *
|
48
|
+
version_requirements: *id003
|
38
49
|
- !ruby/object:Gem::Dependency
|
39
50
|
name: jeweler
|
40
|
-
requirement: &
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
41
52
|
none: false
|
42
53
|
requirements:
|
43
54
|
- - ~>
|
@@ -45,10 +56,10 @@ dependencies:
|
|
45
56
|
version: 1.5.2
|
46
57
|
type: :development
|
47
58
|
prerelease: false
|
48
|
-
version_requirements: *
|
59
|
+
version_requirements: *id004
|
49
60
|
- !ruby/object:Gem::Dependency
|
50
61
|
name: rcov
|
51
|
-
requirement: &
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
52
63
|
none: false
|
53
64
|
requirements:
|
54
65
|
- - ">="
|
@@ -56,8 +67,195 @@ dependencies:
|
|
56
67
|
version: "0"
|
57
68
|
type: :development
|
58
69
|
prerelease: false
|
59
|
-
version_requirements: *
|
60
|
-
|
70
|
+
version_requirements: *id005
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: bundler
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 1.0.0
|
79
|
+
type: :development
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: *id006
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: shoulda
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: "0"
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: *id007
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: jeweler
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ~>
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: 1.5.2
|
101
|
+
type: :development
|
102
|
+
prerelease: false
|
103
|
+
version_requirements: *id008
|
104
|
+
- !ruby/object:Gem::Dependency
|
105
|
+
name: simplecov
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 0.4.0
|
112
|
+
type: :development
|
113
|
+
prerelease: false
|
114
|
+
version_requirements: *id009
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: autotest-standalone
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
119
|
+
requirements:
|
120
|
+
- - ~>
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 4.5.5
|
123
|
+
type: :development
|
124
|
+
prerelease: false
|
125
|
+
version_requirements: *id010
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: bundler
|
128
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 1.0.0
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: *id011
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
name: shoulda
|
139
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
140
|
+
none: false
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: "0"
|
145
|
+
type: :development
|
146
|
+
prerelease: false
|
147
|
+
version_requirements: *id012
|
148
|
+
- !ruby/object:Gem::Dependency
|
149
|
+
name: mocha
|
150
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
151
|
+
none: false
|
152
|
+
requirements:
|
153
|
+
- - ~>
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: 0.9.12
|
156
|
+
type: :development
|
157
|
+
prerelease: false
|
158
|
+
version_requirements: *id013
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: jeweler
|
161
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ~>
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 1.5.2
|
167
|
+
type: :development
|
168
|
+
prerelease: false
|
169
|
+
version_requirements: *id014
|
170
|
+
- !ruby/object:Gem::Dependency
|
171
|
+
name: simplecov
|
172
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
173
|
+
none: false
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: 0.4.0
|
178
|
+
type: :development
|
179
|
+
prerelease: false
|
180
|
+
version_requirements: *id015
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: autotest-standalone
|
183
|
+
requirement: &id016 !ruby/object:Gem::Requirement
|
184
|
+
none: false
|
185
|
+
requirements:
|
186
|
+
- - ~>
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: 4.5.5
|
189
|
+
type: :development
|
190
|
+
prerelease: false
|
191
|
+
version_requirements: *id016
|
192
|
+
- !ruby/object:Gem::Dependency
|
193
|
+
name: bundler
|
194
|
+
requirement: &id017 !ruby/object:Gem::Requirement
|
195
|
+
none: false
|
196
|
+
requirements:
|
197
|
+
- - ~>
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: 1.0.0
|
200
|
+
type: :development
|
201
|
+
prerelease: false
|
202
|
+
version_requirements: *id017
|
203
|
+
- !ruby/object:Gem::Dependency
|
204
|
+
name: shoulda
|
205
|
+
requirement: &id018 !ruby/object:Gem::Requirement
|
206
|
+
none: false
|
207
|
+
requirements:
|
208
|
+
- - ">="
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: "0"
|
211
|
+
type: :development
|
212
|
+
prerelease: false
|
213
|
+
version_requirements: *id018
|
214
|
+
- !ruby/object:Gem::Dependency
|
215
|
+
name: mocha
|
216
|
+
requirement: &id019 !ruby/object:Gem::Requirement
|
217
|
+
none: false
|
218
|
+
requirements:
|
219
|
+
- - ~>
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: 0.9.12
|
222
|
+
type: :development
|
223
|
+
prerelease: false
|
224
|
+
version_requirements: *id019
|
225
|
+
- !ruby/object:Gem::Dependency
|
226
|
+
name: jeweler
|
227
|
+
requirement: &id020 !ruby/object:Gem::Requirement
|
228
|
+
none: false
|
229
|
+
requirements:
|
230
|
+
- - ~>
|
231
|
+
- !ruby/object:Gem::Version
|
232
|
+
version: 1.5.2
|
233
|
+
type: :development
|
234
|
+
prerelease: false
|
235
|
+
version_requirements: *id020
|
236
|
+
- !ruby/object:Gem::Dependency
|
237
|
+
name: simplecov
|
238
|
+
requirement: &id021 !ruby/object:Gem::Requirement
|
239
|
+
none: false
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: 0.4.0
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: *id021
|
247
|
+
- !ruby/object:Gem::Dependency
|
248
|
+
name: autotest-standalone
|
249
|
+
requirement: &id022 !ruby/object:Gem::Requirement
|
250
|
+
none: false
|
251
|
+
requirements:
|
252
|
+
- - ~>
|
253
|
+
- !ruby/object:Gem::Version
|
254
|
+
version: 4.5.5
|
255
|
+
type: :development
|
256
|
+
prerelease: false
|
257
|
+
version_requirements: *id022
|
258
|
+
description: Rubius provides a simple interface to RADIUS authentication
|
61
259
|
email: ralph@izerion.com
|
62
260
|
executables: []
|
63
261
|
|
@@ -67,6 +265,7 @@ extra_rdoc_files:
|
|
67
265
|
- LICENSE.txt
|
68
266
|
- README.rdoc
|
69
267
|
files:
|
268
|
+
- .autotest
|
70
269
|
- Gemfile
|
71
270
|
- LICENSE.txt
|
72
271
|
- README.rdoc
|
@@ -82,8 +281,10 @@ files:
|
|
82
281
|
- lib/rubius/packet.rb
|
83
282
|
- lib/rubius/rails.rb
|
84
283
|
- lib/rubius/string.rb
|
284
|
+
- rubius.gemspec
|
85
285
|
- test/helper.rb
|
86
|
-
- test/
|
286
|
+
- test/test_dictionary.rb
|
287
|
+
- test/test_string.rb
|
87
288
|
has_rdoc: true
|
88
289
|
homepage: http://github.com/rahvin/rubius
|
89
290
|
licenses:
|
@@ -98,7 +299,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
98
299
|
requirements:
|
99
300
|
- - ">="
|
100
301
|
- !ruby/object:Gem::Version
|
101
|
-
hash:
|
302
|
+
hash: -3471732790188196430
|
102
303
|
segments:
|
103
304
|
- 0
|
104
305
|
version: "0"
|
@@ -114,7 +315,8 @@ rubyforge_project:
|
|
114
315
|
rubygems_version: 1.5.2
|
115
316
|
signing_key:
|
116
317
|
specification_version: 3
|
117
|
-
summary: A
|
318
|
+
summary: A simple ruby RADIUS authentication gem
|
118
319
|
test_files:
|
119
320
|
- test/helper.rb
|
120
|
-
- test/
|
321
|
+
- test/test_dictionary.rb
|
322
|
+
- test/test_string.rb
|