mtgsy 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mtgsy/api_client.rb +96 -17
- data/lib/mtgsy/version.rb +1 -1
- data/lib/mtgsy.rb +14 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5eb81b3ca3aa7b5260a4ac6ffdaa495443a50c07
|
4
|
+
data.tar.gz: 3c3bc8c0a0606530490ba26b4957f685d3edf2d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ceec4d977f42565e3623d94045ee0414ea21240d15fbde873aadd9fd673785af1cb817436d8526f9ddf6e1243a9083bec77fcf2292309e131611a00048141381
|
7
|
+
data.tar.gz: 592b20fd9d189d2356419eb84b467154d691c2aacf9e9c5c8198a59043a24b02c99a3ec34916f70b0924e6b55b4b41d6a55544db8392e637826e1027c507bc87
|
data/lib/mtgsy/api_client.rb
CHANGED
@@ -6,15 +6,18 @@ module Mtgsy
|
|
6
6
|
def initialize(options = {})
|
7
7
|
@agent = Mechanize.new
|
8
8
|
@api_endpoint = "https://www.mtgsy.net/dns/api.php"
|
9
|
+
@record_types = [ 'A', 'AAAA', 'CNAME', 'HINFO', 'MX', 'NS', 'PTR', 'RP', 'SRV', 'TXT' ]
|
10
|
+
|
11
|
+
@debug = options[:debug] ? options[:debug] : false
|
9
12
|
|
10
13
|
# attr_accessor
|
11
14
|
@domainname = options[:domainname] ? options[:domainname] : nil
|
12
15
|
@username = options[:username] ? options[:username] : nil
|
16
|
+
@ttl = options[:ttl] ? options[:ttl] : 900
|
13
17
|
@aux = 0
|
14
|
-
@ttl = 1800
|
15
18
|
|
16
19
|
# attr_writer
|
17
|
-
@password
|
20
|
+
@password = options[:password] ? options[:password] : nil
|
18
21
|
end
|
19
22
|
|
20
23
|
attr_accessor :domainname, :username, :aux, :ttl
|
@@ -28,33 +31,109 @@ module Mtgsy
|
|
28
31
|
aux = options[:aux ] ? options[:aux].to_s : @aux.to_s
|
29
32
|
ttl = options[:ttl ] ? options[:ttl].to_s : @ttl.to_s
|
30
33
|
|
31
|
-
|
32
|
-
[ 'command' ,command ],
|
33
|
-
[ 'username' ,@username ],
|
34
|
-
[ 'password' ,@password ],
|
35
|
-
[ 'domainname' ,@domainname ],
|
36
|
-
[ 'name' ,name ],
|
37
|
-
[ 'type' ,type ],
|
38
|
-
[ 'data' ,data ],
|
39
|
-
[ 'aux' ,aux ],
|
40
|
-
[ 'ttl' ,ttl ]
|
41
|
-
])
|
34
|
+
post_to_mtgsy([ command, name, type, data, aux, ttl ])
|
42
35
|
|
36
|
+
what_happened?(@agent, command)
|
43
37
|
end
|
44
38
|
|
45
39
|
def delete_record(options={})
|
46
40
|
command = "deleterecord"
|
47
|
-
|
41
|
+
name = options[:name] ? options[:name].to_s : (raise "delete_record requires :name")
|
42
|
+
type = options[:type] ? options[:type].to_s : nil
|
43
|
+
data = options[:data] ? options[:data].to_s : nil
|
44
|
+
aux = options[:aux ] ? options[:aux].to_s : nil
|
45
|
+
ttl = options[:ttl ] ? options[:ttl].to_s : nil
|
46
|
+
|
47
|
+
post_to_mtgsy([ command, name, type, data, aux, ttl ])
|
48
|
+
|
49
|
+
what_happened?(@agent, command)
|
48
50
|
end
|
49
51
|
|
50
52
|
def update_record(options={})
|
51
53
|
command = "updaterecord"
|
52
|
-
|
54
|
+
name = options[:name] ? options[:name].to_s : (raise "update_record requires :name")
|
55
|
+
type = options[:type] ? options[:type].to_s : nil
|
56
|
+
data = options[:data] ? options[:data].to_s : nil
|
57
|
+
aux = options[:aux ] ? options[:aux].to_s : nil
|
58
|
+
ttl = options[:ttl ] ? options[:ttl].to_s : nil
|
59
|
+
|
60
|
+
post_to_mtgsy([ command, name, type, data, aux, ttl ])
|
61
|
+
|
62
|
+
what_happened?(@agent, command)
|
63
|
+
end
|
64
|
+
|
65
|
+
def refresh!
|
66
|
+
command = "listrecords"
|
67
|
+
post_to_mtgsy([ command ])
|
68
|
+
|
69
|
+
@records_ALL = @agent.page.body.split('<br>')
|
70
|
+
@records_ALL.pop
|
71
|
+
@records_ALL.collect! { |i| i.split(",") }
|
72
|
+
|
73
|
+
|
74
|
+
@record_types.each do |x|
|
75
|
+
tmp_placeholder = []
|
76
|
+
@records_ALL.each do |record|
|
77
|
+
tmp_placeholder << record if record[RECORD_TYPE] == x
|
78
|
+
end
|
79
|
+
instance_variable_set("@records_#{x}", tmp_placeholder)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def records(type="ALL")
|
84
|
+
self.refresh! unless @records_ALL
|
85
|
+
|
86
|
+
eval("@records_#{type}")
|
87
|
+
end
|
88
|
+
|
89
|
+
def record_types?
|
90
|
+
@record_types
|
53
91
|
end
|
54
92
|
|
55
93
|
private
|
56
|
-
def
|
57
|
-
|
94
|
+
def post_to_mtgsy(params)
|
95
|
+
command = params[Mtgsy::POST_COMMAND]
|
96
|
+
name = params[Mtgsy::POST_NAME]
|
97
|
+
type = params[Mtgsy::POST_TYPE]
|
98
|
+
data = params[Mtgsy::POST_DATA]
|
99
|
+
aux = params[Mtgsy::POST_AUX]
|
100
|
+
data = params[Mtgsy::POST_TTL]
|
101
|
+
|
102
|
+
post_data = []
|
103
|
+
post_data << [ 'command' ,command ] if command
|
104
|
+
post_data << [ 'username' ,@username ] if @username
|
105
|
+
post_data << [ 'password' ,@password ] if @password
|
106
|
+
post_data << [ 'domainname' ,@domainname ] if @domainname
|
107
|
+
post_data << [ 'name' ,name ] if name
|
108
|
+
post_data << [ 'type' ,type ] if type
|
109
|
+
post_data << [ 'data' ,data ] if data
|
110
|
+
post_data << [ 'aux' ,aux ] if aux
|
111
|
+
post_data << [ 'ttl' ,ttl ] if ttl
|
112
|
+
|
113
|
+
p post_data if @debug
|
114
|
+
|
115
|
+
@agent.post(@api_endpoint, post_data)
|
116
|
+
end
|
117
|
+
|
118
|
+
def what_happened?(mechanize_instance, command)
|
119
|
+
mtgsy_return_code = mechanize_instance.page.body.match(/[0-9]+/)[0].to_i
|
120
|
+
|
121
|
+
case mtgsy_return_code
|
122
|
+
when 800
|
123
|
+
puts "OK"
|
124
|
+
when 400
|
125
|
+
$stderr.puts "No domain name specified"
|
126
|
+
when 100
|
127
|
+
$stderr.puts "Balance insufficcient"
|
128
|
+
when 300
|
129
|
+
$stderr.puts "Invalid login information supplied"
|
130
|
+
when 305
|
131
|
+
$stderr.puts "Domain not found"
|
132
|
+
when 310
|
133
|
+
$stderr.puts "Record not found / problem adding record"
|
134
|
+
when 200
|
135
|
+
$stderr.puts "Insufficcient information supplied"
|
136
|
+
end
|
58
137
|
end
|
59
138
|
end
|
60
139
|
end
|
data/lib/mtgsy/version.rb
CHANGED
data/lib/mtgsy.rb
CHANGED
@@ -2,4 +2,18 @@ require "mtgsy/version"
|
|
2
2
|
require "mtgsy/api_client"
|
3
3
|
|
4
4
|
module Mtgsy
|
5
|
+
# e.g. post_to_mtgsy([ command, name, type, data, aux, ttl ])
|
6
|
+
POST_COMMAND = 0
|
7
|
+
POST_NAME = 1
|
8
|
+
POST_TYPE = 2
|
9
|
+
POST_DATA = 3
|
10
|
+
POST_AUX = 4
|
11
|
+
POST_TTL = 5
|
12
|
+
|
13
|
+
# For the record types, e.g. ["vc32staging", "A", "50.56.9.191", "0", "123"]
|
14
|
+
RECORD_NAME = 0
|
15
|
+
RECORD_TYPE = 1
|
16
|
+
RECORD_DATA = 2
|
17
|
+
RECORD_AUX = 3
|
18
|
+
RECORD_TTL = 4
|
5
19
|
end
|