traquitana 0.0.26 → 0.0.27
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Rakefile +3 -1
- data/gem-public_cert.pem +15 -15
- data/lib/bar.rb +31 -30
- data/lib/cleaner.rb +15 -14
- data/lib/config.rb +63 -49
- data/lib/deployer.rb +10 -10
- data/lib/migrator.rb +17 -17
- data/lib/packager.rb +32 -32
- data/lib/selector.rb +22 -20
- data/lib/ssh.rb +7 -6
- data/lib/traquitana/version.rb +1 -1
- metadata +17 -17
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0023c831ec77d6545377a52375f6261e83d715fb
|
4
|
+
data.tar.gz: bd9dda6ac25c6ce3a679db83b4af0c243e704ec8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f14e132023064b2065698b4c2ab95071b8d0bb5b63bfcfc05903b356625c34748ab3df37ad639336f49616925a84bb1c1bb5a72f14769c883c7431bfdef628ea
|
7
|
+
data.tar.gz: dc354fe799f3837670d95aa8874239fe886bed7b54b475d071cc611e2dbe9a29a6823898710e4c827a2cd72ee14eae6bc79b60ce4e692b90f2f0a59c8f587bf6
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/Rakefile
CHANGED
data/gem-public_cert.pem
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
2
|
MIIDhTCCAm2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQwwCgYDVQQDDAN0YXEx
|
3
3
|
HzAdBgoJkiaJk/IsZAEZFg9ldXN0YXF1aW9yYW5nZWwxEzARBgoJkiaJk/IsZAEZ
|
4
|
-
|
4
|
+
FgNjb20wHhcNMTYwNDAyMjIzODAxWhcNMTcwNDAyMjIzODAxWjBEMQwwCgYDVQQD
|
5
5
|
DAN0YXExHzAdBgoJkiaJk/IsZAEZFg9ldXN0YXF1aW9yYW5nZWwxEzARBgoJkiaJ
|
6
|
-
k/
|
7
|
-
|
8
|
-
+
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
k/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzL11U
|
7
|
+
8uZ/JhON1bjJ0xe6eXMpXhiT4Cg2U/BVOwDAIgFKS8ux5sw8cGoi3ipOdxQLgsg3
|
8
|
+
3snX5us/Y+7ADDZu0AiTEgYrDeoC8ynRkgNg4bGl3VmnuCtKb/yY5loqSPY7eQxv
|
9
|
+
8sLV0p/LLcPuylh44fK2/xSbAuqlr5XrrEIhwVofDamr2J+eCp9mNhwYWF0u1LqZ
|
10
|
+
k8/wbt+8uDbZUD7Wt9YTG+KRhj9mq3OSQEFYo2o4ijilrEbFvK2tGvQrEkULlHqy
|
11
|
+
L1w17AIVDYEuMcfy+TFZpSv7gm5pss9Qj6Kmlk4NdRJcSZvXIWRMXRgjB6ZcXnHe
|
12
|
+
d3KRktd56NMDw/ITAgMBAAGjgYEwfzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAd
|
13
|
+
BgNVHQ4EFgQU70hplYOT8pBeQRnO/qGa2ZQbLyAwIgYDVR0RBBswGYEXdGFxQGV1
|
14
14
|
c3RhcXVpb3JhbmdlbC5jb20wIgYDVR0SBBswGYEXdGFxQGV1c3RhcXVpb3Jhbmdl
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
15
|
+
bC5jb20wDQYJKoZIhvcNAQEFBQADggEBADA8Wu48wOBngTxogX8sTsz5JArv5Jv+
|
16
|
+
9JMr1WI8ldCqpoPmIjo19luBmPd2aav3NgY1ZUrfjlnbO1p5P/KdVmcaM64bL1hV
|
17
|
+
pBvlfk/1yR8MqjMMX8vR2JHPlLN6M+7+fBI9fXnVtUmL6oIBk9gvyxxi0x2pp8UX
|
18
|
+
JaiwRuWr5x9rbt8xYvDmX/uVFIz0ZB9nB8kKX3I4viJZ8JS6ZNNCpq8Qri8DURq2
|
19
|
+
JzBjXv5+jP7BaxFmlTOJBcCLZQATZKINFqzb7fMkFfbnMdKdcs1P7wkzKw18sP/t
|
20
|
+
FYMhZELccG8VXnfUk5zfuFakoJPqFJ+W34tNhuf95AazAIQF3If4UFU=
|
21
21
|
-----END CERTIFICATE-----
|
data/lib/bar.rb
CHANGED
@@ -1,39 +1,40 @@
|
|
1
1
|
module Traquitana
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
class Bar
|
3
|
+
attr_reader :current
|
4
|
+
attr_accessor :name, :total
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
def initialize
|
7
|
+
reset
|
8
|
+
end
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
10
|
+
def reset
|
11
|
+
@name = nil
|
12
|
+
@total = 0
|
13
|
+
@current = 0
|
14
|
+
@bar_size = 20
|
15
|
+
@bar_step = 5
|
16
|
+
end
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
def indicator(current)
|
19
|
+
bar = Array.new(@bar_size, "_")
|
20
|
+
return bar.join if current <= 0
|
21
21
|
|
22
|
-
|
23
|
-
|
22
|
+
prop = current > 0 ? ((100 / (total / current.to_f)) / @bar_step).to_i : 0
|
23
|
+
return bar.join if prop <= 0
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
bar[0...prop] = Array.new(prop, "#")
|
26
|
+
bar.join
|
27
|
+
end
|
28
|
+
|
29
|
+
def update(current)
|
30
|
+
@current = current
|
31
|
+
file = File.basename(@name).ljust(25)
|
32
|
+
STDOUT.print "#{file} : #{self.indicator(current)}\r"
|
28
33
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
STDOUT.print "#{file} : #{self.indicator(current)}\r"
|
33
|
-
if @current>=@total
|
34
|
-
STDOUT.puts "\n"
|
35
|
-
@current = -1
|
36
|
-
end
|
34
|
+
if @current >= @total
|
35
|
+
STDOUT.puts "\n"
|
36
|
+
@current = -1
|
37
37
|
end
|
38
|
-
|
38
|
+
end
|
39
|
+
end
|
39
40
|
end
|
data/lib/cleaner.rb
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
module Traquitana
|
2
|
-
|
3
|
-
|
2
|
+
class Cleaner
|
3
|
+
attr_accessor :network
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
@options = @config.password.size>1 ? {:password=>@config.password} : {}
|
9
|
-
@network = Traquitana::SSH.new(@config.host,@config.user,@options)
|
10
|
-
end
|
5
|
+
def initialize
|
6
|
+
@config = Traquitana::Config.instance
|
7
|
+
@config.load
|
11
8
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
9
|
+
@options = @config.password.size > 1 ? { password: @config.password } : {}
|
10
|
+
@network = Traquitana::SSH.new(@config.host, @config.user, @options)
|
11
|
+
end
|
12
|
+
|
13
|
+
def run
|
14
|
+
STDOUT.print "Cleaning old files ... "
|
15
|
+
@network.execute(["find #{@config.directory}/traq -type f -iname '*.zip' -o -iname '*.list' | sort | head -n-2 | xargs rm $1"])
|
16
|
+
STDOUT.puts "done."
|
17
|
+
end
|
18
|
+
end
|
18
19
|
end
|
data/lib/config.rb
CHANGED
@@ -1,61 +1,75 @@
|
|
1
1
|
require "singleton"
|
2
2
|
|
3
3
|
module Traquitana
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
4
|
+
class Config
|
5
|
+
include Singleton
|
6
|
+
attr_accessor :filename, :target
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@configs = {}
|
10
|
+
@filename = "config/traq.yml"
|
11
|
+
@target = nil
|
12
|
+
load
|
13
|
+
end
|
14
|
+
|
15
|
+
def default
|
16
|
+
"#{File.dirname(File.expand_path(__FILE__))}/../config/default.yml"
|
17
|
+
end
|
18
|
+
|
19
|
+
def load(file = nil)
|
20
|
+
check_configs(file)
|
21
|
+
check_target
|
22
|
+
check_default_target
|
23
|
+
end
|
24
|
+
|
25
|
+
def method_missing(meth)
|
26
|
+
@configs[meth.to_s] || ""
|
27
|
+
end
|
13
28
|
|
14
|
-
|
15
|
-
|
29
|
+
def setup
|
30
|
+
STDOUT.puts "Running setup"
|
31
|
+
|
32
|
+
if File.exists?(self.filename)
|
33
|
+
STDERR.puts "The configuration file #{self.filename} already exists."
|
34
|
+
return false
|
16
35
|
end
|
17
36
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
exit(1)
|
26
|
-
end
|
27
|
-
@configs = @configs[@target]
|
28
|
-
STDOUT.puts "Loaded #{@target} target."
|
29
|
-
end
|
30
|
-
if !@target && @configs["default"]
|
31
|
-
STDOUT.puts "Loading default target ..."
|
32
|
-
@configs = @configs["default"]
|
33
|
-
end
|
37
|
+
dir = File.dirname(self.filename)
|
38
|
+
Dir.mkdir(dir) if !File.exist?(dir)
|
39
|
+
|
40
|
+
STDOUT.puts "Writing #{self.filename}"
|
41
|
+
File.open(self.filename, "w") do |file|
|
42
|
+
file << "# Default configuration"
|
43
|
+
file << File.read(self.default)
|
34
44
|
end
|
35
45
|
|
36
|
-
|
37
|
-
|
46
|
+
STDOUT.puts "Setup completed!"
|
47
|
+
STDOUT.puts "You MUST check the configurations on #{self.filename} before deploying!"
|
48
|
+
true
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
def check_configs(file)
|
53
|
+
@configs = YAML.load(File.read(file || self.filename)) rescue nil
|
54
|
+
raise Exception.new("Configs not found (tried #{file} and #{self.filename}") if !@configs
|
55
|
+
end
|
56
|
+
|
57
|
+
def check_target
|
58
|
+
return if !@target
|
59
|
+
if !@configs[@target]
|
60
|
+
STDERR.puts "Target #{@target} not found."
|
61
|
+
exit(1)
|
38
62
|
end
|
39
63
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
Dir.mkdir(dir) if !File.exist?(dir)
|
49
|
-
|
50
|
-
STDOUT.puts "Writing #{self.filename}"
|
51
|
-
File.open(self.filename,"w") do |file|
|
52
|
-
file << "# Default configuration"
|
53
|
-
file << File.read(self.default)
|
54
|
-
end
|
55
|
-
|
56
|
-
STDOUT.puts "Setup completed!"
|
57
|
-
STDOUT.puts "You MUST check the configurations on #{self.filename} before deploying!"
|
58
|
-
true
|
64
|
+
@configs = @configs[@target]
|
65
|
+
STDOUT.puts "Loaded #{@target} target."
|
66
|
+
end
|
67
|
+
|
68
|
+
def check_default_target
|
69
|
+
if !@target && @configs["default"]
|
70
|
+
STDOUT.puts "Loading default target ..."
|
71
|
+
@configs = @configs["default"]
|
59
72
|
end
|
60
|
-
|
73
|
+
end
|
74
|
+
end
|
61
75
|
end
|
data/lib/deployer.rb
CHANGED
@@ -20,16 +20,16 @@ module Traquitana
|
|
20
20
|
|
21
21
|
@config.load
|
22
22
|
|
23
|
-
@options = @config.password.size>1
|
24
|
-
@server = @config.server.to_s.size>0 ? @config.server : "none"
|
25
|
-
@shell = @config.shell
|
26
|
-
@network = Traquitana::SSH.new(@config.host
|
23
|
+
@options = @config.password.size > 1 ? { password: @config.password } : {}
|
24
|
+
@server = @config.server.to_s.size > 0 ? @config.server : "none"
|
25
|
+
@shell = @config.shell ? "#{@config.shell} " : ""
|
26
|
+
@network = Traquitana::SSH.new(@config.host, @config.user, @options)
|
27
27
|
|
28
|
-
@packager
|
29
|
-
@packager.verbose
|
28
|
+
@packager = Traquitana::Packager.new
|
29
|
+
@packager.verbose = @verbose
|
30
30
|
all_list_file, all_list_zip = @packager.pack
|
31
|
-
|
32
|
-
|
31
|
+
|
32
|
+
if !File.exists?(all_list_file) || !File.exists?(all_list_zip)
|
33
33
|
STDERR.puts "\e[31mCould not create the needed files.\e[0m"
|
34
34
|
exit 2
|
35
35
|
end
|
@@ -41,8 +41,8 @@ module Traquitana
|
|
41
41
|
STDOUT.puts "Sending files ..."
|
42
42
|
@network.send_files([["#{File.dirname(File.expand_path(__FILE__))}/../config/proc.sh","#{@config.directory}/traq/proc.sh"],
|
43
43
|
["#{File.dirname(File.expand_path(__FILE__))}/../config/#{@server}.sh","#{@config.directory}/traq/server.sh"],
|
44
|
-
|
45
|
-
|
44
|
+
[all_list_file,"#{@config.directory}/traq/#{File.basename(all_list_file)}"],
|
45
|
+
[all_list_zip ,"#{@config.directory}/traq/#{File.basename(all_list_zip)}"]],@updater)
|
46
46
|
STDOUT.puts "\e[32mAll files sent.\e[0m\n\n"
|
47
47
|
|
48
48
|
@network.execute(["chmod +x #{@config.directory}/traq/proc.sh"],@verbose)
|
data/lib/migrator.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
require "yaml"
|
2
2
|
|
3
3
|
module Traquitana
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
class Migrator
|
5
|
+
def run
|
6
|
+
old_file = "./traq/config.yml"
|
7
|
+
new_file = "./config/traq.yml"
|
8
8
|
|
9
|
-
|
9
|
+
return false if !File.exists?(old_file) || File.exists?(new_file)
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
STDOUT.puts "Migrating old config file ..."
|
12
|
+
contents = YAML.load(File.read(old_file))
|
13
|
+
contents = contents.inject({}) {|hash,val| hash[val.first.to_s] = val.last; hash}.reject { |k,v| k == "ignore"}.to_yaml
|
14
|
+
File.open(new_file, "w") { |f| f << contents }
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
File.unlink(old_file)
|
17
|
+
first_run = "#{File.dirname(old_file)}/.first_run"
|
18
|
+
File.unlink(first_run) if File.exists?(first_run)
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
dir = "#{File.dirname(old_file)}"
|
21
|
+
Dir.unlink(dir) if Dir.exists?(dir)
|
22
|
+
true
|
23
|
+
end
|
24
|
+
end
|
25
25
|
end
|
data/lib/packager.rb
CHANGED
@@ -2,43 +2,43 @@ require "tmpdir"
|
|
2
2
|
require "zip"
|
3
3
|
|
4
4
|
module Traquitana
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
class Packager
|
6
|
+
attr_reader :id
|
7
|
+
attr_accessor :verbose
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
def initialize(dir = "")
|
10
|
+
@dir = dir
|
11
|
+
@id = Time.now.strftime("%Y%m%d%H%M%S%L")
|
12
|
+
@verbose = verbose
|
13
|
+
end
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
def list_file
|
16
|
+
"#{@id}.list"
|
17
|
+
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
def zip_file
|
20
|
+
"#{@id}.zip"
|
21
|
+
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
def pack
|
24
|
+
list_path = "#{Dir.tmpdir}/#{self.list_file}"
|
25
|
+
zip_path = "#{Dir.tmpdir}/#{self.zip_file}"
|
26
|
+
list = Traquitana::Selector.new(@dir).files
|
27
|
+
regex = @dir.to_s.size < 1 ? "" : Regexp.new("^#{@dir}")
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
# write list file
|
30
|
+
STDOUT.puts "Creating the list file: #{list_path}" if @verbose
|
31
|
+
File.open(list_path, "w") {|file| file << list.map { |f| f.sub(regex,"") }.join("\n") }
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
end
|
41
|
-
[list_path,zip_path]
|
33
|
+
# write zip file
|
34
|
+
STDOUT.puts "Creating the zip file : #{zip_path}" if @verbose
|
35
|
+
Zip::File.open(zip_path, "w") do |zip_file|
|
36
|
+
for file in list
|
37
|
+
strip = file.sub(regex, "")
|
38
|
+
zip_file.add(strip, file)
|
39
|
+
end
|
42
40
|
end
|
43
|
-
|
41
|
+
[ list_path, zip_path ]
|
42
|
+
end
|
43
|
+
end
|
44
44
|
end
|
data/lib/selector.rb
CHANGED
@@ -1,24 +1,26 @@
|
|
1
1
|
module Traquitana
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
class Selector
|
3
|
+
def initialize(dir = "")
|
4
|
+
@dir = dir
|
5
|
+
end
|
6
|
+
|
7
|
+
def files
|
8
|
+
config = Traquitana::Config.instance
|
9
|
+
selected = []
|
10
|
+
|
11
|
+
for file in config.list
|
12
|
+
send, *ignore = *file
|
13
|
+
mask = "#{@dir}#{send}"
|
14
|
+
send_list = Dir.glob(mask).select { |f| File.file?(f) }
|
6
15
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
send_list = Dir.glob(mask).select { |f| File.file?(f) }
|
14
|
-
for ignore_mask in ignore
|
15
|
-
mask = "#{@dir}#{ignore_mask}"
|
16
|
-
ignore_list = Dir.glob(mask).select { |f| File.file?(f) }
|
17
|
-
send_list = send_list - ignore_list if ignore_list.size>0
|
18
|
-
end
|
19
|
-
selected.push(*send_list)
|
20
|
-
end
|
21
|
-
selected
|
16
|
+
for ignore_mask in ignore
|
17
|
+
mask = "#{@dir}#{ignore_mask}"
|
18
|
+
ignore_list = Dir.glob(mask).select { |f| File.file?(f) }
|
19
|
+
send_list = send_list - ignore_list if ignore_list.size > 0
|
20
|
+
end
|
21
|
+
selected.push(*send_list)
|
22
22
|
end
|
23
|
-
|
23
|
+
selected
|
24
|
+
end
|
25
|
+
end
|
24
26
|
end
|
data/lib/ssh.rb
CHANGED
@@ -6,7 +6,7 @@ module Traquitana
|
|
6
6
|
class SSH
|
7
7
|
attr_reader :host, :user, :options
|
8
8
|
|
9
|
-
def initialize(host,user,options=nil)
|
9
|
+
def initialize(host, user, options = nil)
|
10
10
|
@host = host
|
11
11
|
@user = user
|
12
12
|
@options = options || {}
|
@@ -26,29 +26,30 @@ module Traquitana
|
|
26
26
|
rst << ch.exec(cmd)
|
27
27
|
end # for
|
28
28
|
|
29
|
-
ch.on_data do |
|
29
|
+
ch.on_data do |chd, data|
|
30
30
|
msg = data.inspect.to_s.gsub(/^"/,"").gsub(/"$/,"").gsub(/"\\"/,"\\").gsub("\\r","").gsub("\\n","\n").gsub("\\e","\e").strip.chomp
|
31
31
|
if data.inspect =~ /sudo/
|
32
|
-
pwd = ask("\nNeed password to run as root/sudo: ") {|c| c.echo = "*"}
|
32
|
+
pwd = ask("\nNeed password to run as root/sudo: ") { |c| c.echo = "*" }
|
33
33
|
channel.send_data("#{pwd}\n")
|
34
34
|
sleep 0.1
|
35
35
|
else
|
36
36
|
puts msg if msg.size > 1
|
37
37
|
end
|
38
|
-
|
38
|
+
chd.wait
|
39
39
|
end
|
40
40
|
end # tty
|
41
41
|
end # channel
|
42
|
+
ssh.loop
|
42
43
|
end # ssh start
|
43
44
|
rst
|
44
45
|
end
|
45
46
|
|
46
47
|
def send_files(col,updater=nil)
|
47
|
-
Net::SCP.start(@host
|
48
|
+
Net::SCP.start(@host, @user, @options) do |scp|
|
48
49
|
for files in col
|
49
50
|
from, to = *files
|
50
51
|
next if from.nil? || to.nil?
|
51
|
-
scp.upload!(from,to) do |ch,name,sent,total|
|
52
|
+
scp.upload!(from,to) do |ch, name, sent, total|
|
52
53
|
if !updater.nil?
|
53
54
|
updater.name = to
|
54
55
|
updater.total = total
|
data/lib/traquitana/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: traquitana
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.27
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eustaquio Rangel
|
@@ -12,25 +12,25 @@ cert_chain:
|
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIDhTCCAm2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQwwCgYDVQQDDAN0YXEx
|
14
14
|
HzAdBgoJkiaJk/IsZAEZFg9ldXN0YXF1aW9yYW5nZWwxEzARBgoJkiaJk/IsZAEZ
|
15
|
-
|
15
|
+
FgNjb20wHhcNMTYwNDAyMjIzODAxWhcNMTcwNDAyMjIzODAxWjBEMQwwCgYDVQQD
|
16
16
|
DAN0YXExHzAdBgoJkiaJk/IsZAEZFg9ldXN0YXF1aW9yYW5nZWwxEzARBgoJkiaJ
|
17
|
-
k/
|
18
|
-
|
19
|
-
+
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
17
|
+
k/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzL11U
|
18
|
+
8uZ/JhON1bjJ0xe6eXMpXhiT4Cg2U/BVOwDAIgFKS8ux5sw8cGoi3ipOdxQLgsg3
|
19
|
+
3snX5us/Y+7ADDZu0AiTEgYrDeoC8ynRkgNg4bGl3VmnuCtKb/yY5loqSPY7eQxv
|
20
|
+
8sLV0p/LLcPuylh44fK2/xSbAuqlr5XrrEIhwVofDamr2J+eCp9mNhwYWF0u1LqZ
|
21
|
+
k8/wbt+8uDbZUD7Wt9YTG+KRhj9mq3OSQEFYo2o4ijilrEbFvK2tGvQrEkULlHqy
|
22
|
+
L1w17AIVDYEuMcfy+TFZpSv7gm5pss9Qj6Kmlk4NdRJcSZvXIWRMXRgjB6ZcXnHe
|
23
|
+
d3KRktd56NMDw/ITAgMBAAGjgYEwfzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAd
|
24
|
+
BgNVHQ4EFgQU70hplYOT8pBeQRnO/qGa2ZQbLyAwIgYDVR0RBBswGYEXdGFxQGV1
|
25
25
|
c3RhcXVpb3JhbmdlbC5jb20wIgYDVR0SBBswGYEXdGFxQGV1c3RhcXVpb3Jhbmdl
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
bC5jb20wDQYJKoZIhvcNAQEFBQADggEBADA8Wu48wOBngTxogX8sTsz5JArv5Jv+
|
27
|
+
9JMr1WI8ldCqpoPmIjo19luBmPd2aav3NgY1ZUrfjlnbO1p5P/KdVmcaM64bL1hV
|
28
|
+
pBvlfk/1yR8MqjMMX8vR2JHPlLN6M+7+fBI9fXnVtUmL6oIBk9gvyxxi0x2pp8UX
|
29
|
+
JaiwRuWr5x9rbt8xYvDmX/uVFIz0ZB9nB8kKX3I4viJZ8JS6ZNNCpq8Qri8DURq2
|
30
|
+
JzBjXv5+jP7BaxFmlTOJBcCLZQATZKINFqzb7fMkFfbnMdKdcs1P7wkzKw18sP/t
|
31
|
+
FYMhZELccG8VXnfUk5zfuFakoJPqFJ+W34tNhuf95AazAIQF3If4UFU=
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date:
|
33
|
+
date: 2016-04-02 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: rubyzip
|
metadata.gz.sig
CHANGED
Binary file
|