palobr 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/palobr.gemspec ADDED
@@ -0,0 +1,77 @@
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{palobr}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Timothy Klim"]
12
+ s.date = %q{2011-05-10}
13
+ s.default_executable = %q{palobr}
14
+ s.description = %q{Simple backup system for pushing into cloud}
15
+ s.email = %q{klimtimothy@gmail.com}
16
+ s.executables = ["palobr"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE.txt",
19
+ "README.rdoc"
20
+ ]
21
+ s.files = [
22
+ "Gemfile",
23
+ "LICENSE.txt",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "bin/palobr",
28
+ "lib/backup.rb",
29
+ "lib/backup/file_item.rb",
30
+ "lib/backup/file_item/base.rb",
31
+ "lib/backup/file_item/cloud.rb",
32
+ "lib/backup/file_item/local.rb",
33
+ "lib/backup/jar.rb",
34
+ "lib/backup/timestamp.rb",
35
+ "lib/crypto.rb",
36
+ "lib/helpers.rb",
37
+ "palobr.gemspec",
38
+ "test/helper.rb",
39
+ "test/test_backup.rb",
40
+ "test/test_backup_file_item.rb",
41
+ "test/test_backup_timestamp.rb",
42
+ "test/test_crypto.rb"
43
+ ]
44
+ s.homepage = %q{http://github.com/TimothyKlim/palobr}
45
+ s.licenses = ["MIT"]
46
+ s.require_paths = ["lib"]
47
+ s.rubygems_version = %q{1.6.2}
48
+ s.summary = %q{Simple backup system for pushing into cloud}
49
+
50
+ if s.respond_to? :specification_version then
51
+ s.specification_version = 3
52
+
53
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
54
+ s.add_runtime_dependency(%q<fog>, [">= 0"])
55
+ s.add_runtime_dependency(%q<slop>, [">= 0"])
56
+ s.add_runtime_dependency(%q<ruby-progressbar>, [">= 0"])
57
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
58
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.0"])
59
+ s.add_development_dependency(%q<rcov>, [">= 0"])
60
+ else
61
+ s.add_dependency(%q<fog>, [">= 0"])
62
+ s.add_dependency(%q<slop>, [">= 0"])
63
+ s.add_dependency(%q<ruby-progressbar>, [">= 0"])
64
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
65
+ s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
66
+ s.add_dependency(%q<rcov>, [">= 0"])
67
+ end
68
+ else
69
+ s.add_dependency(%q<fog>, [">= 0"])
70
+ s.add_dependency(%q<slop>, [">= 0"])
71
+ s.add_dependency(%q<ruby-progressbar>, [">= 0"])
72
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
73
+ s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
74
+ s.add_dependency(%q<rcov>, [">= 0"])
75
+ end
76
+ end
77
+
data/test/helper.rb ADDED
@@ -0,0 +1,15 @@
1
+ $LOAD_PATH.unshift(File.expand_path("../../lib/", __FILE__))
2
+
3
+ require 'rubygems'
4
+ require 'test/unit'
5
+ require 'yaml'
6
+ require 'digest'
7
+ require 'fileutils'
8
+ require 'openssl'
9
+
10
+ require 'backup'
11
+ require 'crypto'
12
+
13
+ def puts_fail msg
14
+ raise msg
15
+ end
@@ -0,0 +1,7 @@
1
+ require File.expand_path("../helper.rb", __FILE__)
2
+
3
+ class TestBackup < Test::Unit::TestCase
4
+ def test
5
+
6
+ end
7
+ end
@@ -0,0 +1,31 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class BackupFileItemTest < Test::Unit::TestCase
4
+ def test_semantic_path
5
+ assert_equal __FILE__, Backup::FileItem.semantic_path(__FILE__)
6
+ assert_equal File.dirname(__FILE__) + '/',
7
+ Backup::FileItem.semantic_path(File.dirname(__FILE__))
8
+ end
9
+
10
+ def test_file_stat
11
+ file = Backup::FileItem.stat(__FILE__, Backup::Timestamp.create)
12
+ key = file.keys.first
13
+
14
+ assert_not_nil file[key][:uid]
15
+ assert_not_nil file[key][:gid]
16
+ assert_not_nil file[key][:mode]
17
+ assert_not_nil file[key][:checksum]
18
+ assert_not_nil file[key][:timestamp]
19
+ end
20
+
21
+ def test_directory_stat
22
+ file = Backup::FileItem.stat(File.dirname(__FILE__), Backup::Timestamp.create)
23
+ key = file.keys.first
24
+
25
+ assert_not_nil file[key][:uid]
26
+ assert_not_nil file[key][:gid]
27
+ assert_not_nil file[key][:mode]
28
+ assert_nil file[key][:checksum]
29
+ assert_not_nil file[key][:timestamp]
30
+ end
31
+ end
@@ -0,0 +1,65 @@
1
+ require File.expand_path("../helper", __FILE__)
2
+
3
+ class BackupTimestampTest < Test::Unit::TestCase
4
+ def test_parse_timestamp
5
+ assert_equal Backup::Timestamp.parse_timestamp("110102201130"),
6
+ Time.new(2011, 01, 02, 20, 11, 30, 0)
7
+
8
+ assert_equal Backup::Timestamp.parse_timestamp("11.01.02. 20:11:30"),
9
+ Time.new(2011, 01, 02, 20, 11, 30, 0)
10
+
11
+ assert_equal Backup::Timestamp.parse_timestamp("1101022011"),
12
+ Time.new(2011, 01, 02, 20, 11, 0, 0)
13
+ assert_equal Backup::Timestamp.parse_timestamp("11010220"),
14
+ Time.new(2011, 01, 02, 20, 0, 0, 0)
15
+ assert_equal Backup::Timestamp.parse_timestamp("110102"),
16
+ Time.new(2011, 01, 02, 0, 0, 0, 0)
17
+
18
+ assert_equal Backup::Timestamp.parse_timestamp("1101022011", true),
19
+ Time.new(2011, 01, 02, 20, 11, 59, 0)
20
+ assert_equal Backup::Timestamp.parse_timestamp("11010220", true),
21
+ Time.new(2011, 01, 02, 20, 59, 59, 0)
22
+ assert_equal Backup::Timestamp.parse_timestamp("110102", true),
23
+ Time.new(2011, 01, 02, 23, 59, 59, 0)
24
+
25
+ assert_not_equal Backup::Timestamp.parse_timestamp("110102201130"),
26
+ Time.new(2011, 01, 02, 20, 11, 31, 0)
27
+
28
+ assert_raise(RuntimeError) { Backup::Timestamp.parse_timestamp("11d10.,130") }
29
+ end
30
+
31
+ def test_last_from
32
+ timestamps = ["110130090812", "110130103412", "110106121234"]
33
+
34
+ assert_equal("110130103412",
35
+ Backup::Timestamp.last_from(timestamps,
36
+ Backup::Timestamp.parse_timestamp("110130", true)))
37
+ assert_equal("110130090812",
38
+ Backup::Timestamp.last_from(timestamps,
39
+ Backup::Timestamp.parse_timestamp("11013009", true)))
40
+ assert_equal("110106121234",
41
+ Backup::Timestamp.last_from(timestamps,
42
+ Backup::Timestamp.parse_timestamp("110106", true)))
43
+
44
+ assert_equal("110130103412",
45
+ Backup::Timestamp.last_from(timestamps,
46
+ Backup::Timestamp.parse_timestamp("110130", true),
47
+ Backup::Timestamp.parse_timestamp("110130")))
48
+ assert_equal("110106121234",
49
+ Backup::Timestamp.last_from(timestamps,
50
+ Backup::Timestamp.parse_timestamp("110110", true),
51
+ Backup::Timestamp.parse_timestamp("110101")))
52
+ assert_equal("110130090812",
53
+ Backup::Timestamp.last_from(timestamps,
54
+ Backup::Timestamp.parse_timestamp("1101300908", true),
55
+ Backup::Timestamp.parse_timestamp("110130090811")))
56
+
57
+ end
58
+
59
+ def test_create_timestamp
60
+ time = Time.new(2011, 01, 02, 23, 59, 59, 0)
61
+
62
+ assert_equal(Backup::Timestamp.create.length, 12)
63
+ assert_equal(Backup::Timestamp.create(time), "110102235959")
64
+ end
65
+ end
@@ -0,0 +1,59 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ # text = "I was encrypted but came back!"
4
+ #
5
+ # secret = pub_key.encrypt(text)
6
+ # puts priv_key.decrypt(secret)
7
+
8
+ class TestCrypto < Test::Unit::TestCase
9
+ def fixtures
10
+ File.expand_path('../fixtures/rsa_keys', __FILE__)
11
+ end
12
+
13
+ def create_keys!(bits = 4096)
14
+ Crypto.create_keys("#{fixtures}/rsa_key", "#{fixtures}/rsa_key.pub", bits)
15
+ end
16
+
17
+ def load_keys
18
+ @priv_key = Crypto::Key.from_file("#{fixtures}/rsa_key")
19
+ @pub_key = Crypto::Key.from_file("#{fixtures}/rsa_key.pub")
20
+ end
21
+
22
+ def test_create_keys
23
+ create_keys!
24
+
25
+ assert_not_nil File.open("#{fixtures}/rsa_key").read
26
+ assert_not_nil File.open("#{fixtures}/rsa_key.pub").read
27
+ end
28
+
29
+ def test_encrypt
30
+ end
31
+
32
+ def test_decrypt
33
+ end
34
+
35
+ def test_crypt_text
36
+ end
37
+
38
+ def test_time
39
+ create_keys! 512
40
+ load_keys
41
+
42
+ secret = ""
43
+ f = open("/tmp/10mb").read
44
+
45
+ start_time = Time.now
46
+
47
+ i = 0
48
+ while text = f[i..(i+=52)] do
49
+ crypt_text = @pub_key.encrypt(text)
50
+ # crypt_text = text
51
+ secret += crypt_text
52
+ end
53
+ secret_time = Time.now
54
+ # @priv_key.decrypt(secret)
55
+
56
+ puts "*"*20
57
+ STDOUT.puts "Start time: #{start_time}\nSecret time: #{secret_time - start_time}\nTotal: #{Time.now - start_time}"
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: palobr
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Timothy Klim
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-05-10 00:00:00 +04:00
14
+ default_executable: palobr
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: fog
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: slop
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: ruby-progressbar
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :runtime
47
+ prerelease: false
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: bundler
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 1.0.0
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: jeweler
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 1.6.0
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: rcov
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: "0"
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: *id006
82
+ description: Simple backup system for pushing into cloud
83
+ email: klimtimothy@gmail.com
84
+ executables:
85
+ - palobr
86
+ extensions: []
87
+
88
+ extra_rdoc_files:
89
+ - LICENSE.txt
90
+ - README.rdoc
91
+ files:
92
+ - Gemfile
93
+ - LICENSE.txt
94
+ - README.rdoc
95
+ - Rakefile
96
+ - VERSION
97
+ - bin/palobr
98
+ - lib/backup.rb
99
+ - lib/backup/file_item.rb
100
+ - lib/backup/file_item/base.rb
101
+ - lib/backup/file_item/cloud.rb
102
+ - lib/backup/file_item/local.rb
103
+ - lib/backup/jar.rb
104
+ - lib/backup/timestamp.rb
105
+ - lib/crypto.rb
106
+ - lib/helpers.rb
107
+ - palobr.gemspec
108
+ - test/helper.rb
109
+ - test/test_backup.rb
110
+ - test/test_backup_file_item.rb
111
+ - test/test_backup_timestamp.rb
112
+ - test/test_crypto.rb
113
+ has_rdoc: true
114
+ homepage: http://github.com/TimothyKlim/palobr
115
+ licenses:
116
+ - MIT
117
+ post_install_message:
118
+ rdoc_options: []
119
+
120
+ require_paths:
121
+ - lib
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ hash: -1906186080507489003
128
+ segments:
129
+ - 0
130
+ version: "0"
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: "0"
137
+ requirements: []
138
+
139
+ rubyforge_project:
140
+ rubygems_version: 1.6.2
141
+ signing_key:
142
+ specification_version: 3
143
+ summary: Simple backup system for pushing into cloud
144
+ test_files: []
145
+