outback 0.0.14 → 1.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.
- checksums.yaml +7 -0
- data/CHANGELOG +11 -0
- data/LICENSE +21 -0
- data/README.md +29 -3
- data/lib/outback/archive.rb +6 -17
- data/lib/outback/backup.rb +38 -20
- data/lib/outback/cli.rb +6 -2
- data/lib/outback/configuration.rb +15 -10
- data/lib/outback/directory_source.rb +8 -7
- data/lib/outback/directory_target.rb +18 -11
- data/lib/outback/encryption_processor.rb +34 -0
- data/lib/outback/errors.rb +7 -0
- data/lib/outback/logging.rb +7 -0
- data/lib/outback/mysql_source.rb +9 -9
- data/lib/outback/processor.rb +17 -0
- data/lib/outback/s3_target.rb +18 -9
- data/lib/outback/sftp_target.rb +70 -0
- data/lib/outback/source.rb +9 -2
- data/lib/outback/source_archive.rb +17 -0
- data/lib/outback/support/attr_setter.rb +1 -1
- data/lib/outback/support/configurable.rb +5 -3
- data/lib/outback/target.rb +52 -14
- data/lib/outback/target_archive.rb +30 -0
- data/lib/outback/version.rb +3 -0
- data/lib/outback.rb +16 -11
- data/lib/vendor/enumerable_ext.rb +9 -0
- data/lib/{outback/vendor → vendor}/metaclass.rb +1 -1
- data/lib/vendor/methodphitamine.rb +28 -0
- data/lib/vendor/mysql/charset.rb +325 -0
- data/lib/vendor/mysql/constants.rb +165 -0
- data/lib/vendor/mysql/error.rb +989 -0
- data/lib/vendor/mysql/packet.rb +78 -0
- data/lib/vendor/mysql/protocol.rb +770 -0
- data/lib/vendor/mysql.rb +1093 -0
- data/lib/vendor/numeric_ext.rb +49 -0
- data/lib/vendor/string_ext.rb +19 -0
- metadata +84 -43
- data/MIT-LICENSE +0 -20
- data/VERSION +0 -1
- data/lib/outback/configuration_error.rb +0 -4
- data/lib/outback/directory_archive.rb +0 -8
- data/lib/outback/local_archive.rb +0 -6
- data/lib/outback/s3_archive.rb +0 -18
- data/lib/outback/temp_archive.rb +0 -5
- data/lib/outback/vendor/methodphitamine.rb +0 -25
- data/lib/outback/vendor/mysql.rb +0 -1214
@@ -0,0 +1,78 @@
|
|
1
|
+
# coding: ascii-8bit
|
2
|
+
class Mysql
|
3
|
+
class Packet
|
4
|
+
# convert Numeric to LengthCodedBinary
|
5
|
+
def self.lcb(num)
|
6
|
+
return "\xfb" if num.nil?
|
7
|
+
return [num].pack("C") if num < 251
|
8
|
+
return [252, num].pack("Cv") if num < 65536
|
9
|
+
return [253, num&0xffff, num>>16].pack("CvC") if num < 16777216
|
10
|
+
return [254, num&0xffffffff, num>>32].pack("CVV")
|
11
|
+
end
|
12
|
+
|
13
|
+
# convert String to LengthCodedString
|
14
|
+
def self.lcs(str)
|
15
|
+
str = Charset.to_binary str.dup
|
16
|
+
lcb(str.length)+str
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(data)
|
20
|
+
@data = data
|
21
|
+
end
|
22
|
+
|
23
|
+
def lcb
|
24
|
+
return nil if @data.empty?
|
25
|
+
case v = utiny
|
26
|
+
when 0xfb
|
27
|
+
return nil
|
28
|
+
when 0xfc
|
29
|
+
return ushort
|
30
|
+
when 0xfd
|
31
|
+
c, v = utiny, ushort
|
32
|
+
return (v << 8)+c
|
33
|
+
when 0xfe
|
34
|
+
v1, v2 = ulong, ulong
|
35
|
+
return (v2 << 32)+v1
|
36
|
+
else
|
37
|
+
return v
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def lcs
|
42
|
+
len = self.lcb
|
43
|
+
return nil unless len
|
44
|
+
@data.slice!(0, len)
|
45
|
+
end
|
46
|
+
|
47
|
+
def read(len)
|
48
|
+
@data.slice!(0, len)
|
49
|
+
end
|
50
|
+
|
51
|
+
def string
|
52
|
+
str = @data.unpack('Z*').first
|
53
|
+
@data.slice!(0, str.length+1)
|
54
|
+
str
|
55
|
+
end
|
56
|
+
|
57
|
+
def utiny
|
58
|
+
@data.slice!(0, 1).unpack('C').first
|
59
|
+
end
|
60
|
+
|
61
|
+
def ushort
|
62
|
+
@data.slice!(0, 2).unpack('v').first
|
63
|
+
end
|
64
|
+
|
65
|
+
def ulong
|
66
|
+
@data.slice!(0, 4).unpack('V').first
|
67
|
+
end
|
68
|
+
|
69
|
+
def eof?
|
70
|
+
@data[0] == ?\xfe && @data.length == 5
|
71
|
+
end
|
72
|
+
|
73
|
+
def to_s
|
74
|
+
@data
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|