palobr 0.1.0

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/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
+