zeus-api 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,367 @@
1
+
2
+ require 'rubygems'
3
+ gem 'soap4r'
4
+
5
+ require 'soap/mapping'
6
+
7
+ module VirtualServerMappingRegistry
8
+ EncodedRegistry = ::SOAP::Mapping::EncodedRegistry.new
9
+ LiteralRegistry = ::SOAP::Mapping::LiteralRegistry.new
10
+ NsC_10 = "http://soap.zeus.com/zxtm/1.0/"
11
+
12
+ EncodedRegistry.set(
13
+ StringArray,
14
+ ::SOAP::SOAPArray,
15
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
16
+ { :type => XSD::QName.new("http://www.w3.org/2001/XMLSchema", "string") }
17
+ )
18
+
19
+ EncodedRegistry.set(
20
+ StringArrayArray,
21
+ ::SOAP::SOAPArray,
22
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
23
+ { :type => XSD::QName.new("http://soap.zeus.com/zxtm/1.0/", "StringArray") }
24
+ )
25
+
26
+ EncodedRegistry.register(
27
+ :class => VirtualServerBasicInfo,
28
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.BasicInfo"),
29
+ :schema_element => [
30
+ ["port", ["SOAP::SOAPInt", XSD::QName.new(nil, "port")]],
31
+ ["protocol", ["VirtualServerProtocol", XSD::QName.new(nil, "protocol")]],
32
+ ["default_pool", ["SOAP::SOAPString", XSD::QName.new(nil, "default_pool")]]
33
+ ]
34
+ )
35
+
36
+ EncodedRegistry.set(
37
+ VirtualServerBasicInfoArray,
38
+ ::SOAP::SOAPArray,
39
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
40
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.BasicInfo") }
41
+ )
42
+
43
+ EncodedRegistry.set(
44
+ VirtualServerCookieDomainRewriteModeArray,
45
+ ::SOAP::SOAPArray,
46
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
47
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.CookieDomainRewriteMode") }
48
+ )
49
+
50
+ EncodedRegistry.set(
51
+ VirtualServerCookieSecureFlagRewriteModeArray,
52
+ ::SOAP::SOAPArray,
53
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
54
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.CookieSecureFlagRewriteMode") }
55
+ )
56
+
57
+ EncodedRegistry.register(
58
+ :class => VirtualServerFTPPortRange,
59
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.FTPPortRange"),
60
+ :schema_element => [
61
+ ["low", ["SOAP::SOAPInt", XSD::QName.new(nil, "low")]],
62
+ ["high", ["SOAP::SOAPInt", XSD::QName.new(nil, "high")]]
63
+ ]
64
+ )
65
+
66
+ EncodedRegistry.set(
67
+ VirtualServerFTPPortRangeArray,
68
+ ::SOAP::SOAPArray,
69
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
70
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.FTPPortRange") }
71
+ )
72
+
73
+ EncodedRegistry.set(
74
+ VirtualServerLocationDefaultRewriteModeArray,
75
+ ::SOAP::SOAPArray,
76
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
77
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.LocationDefaultRewriteMode") }
78
+ )
79
+
80
+ EncodedRegistry.register(
81
+ :class => VirtualServerPortRange,
82
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.PortRange"),
83
+ :schema_element => [
84
+ ["low", ["SOAP::SOAPInt", XSD::QName.new(nil, "low")]],
85
+ ["high", ["SOAP::SOAPInt", XSD::QName.new(nil, "high")]]
86
+ ]
87
+ )
88
+
89
+ EncodedRegistry.set(
90
+ VirtualServerPortRangeArray,
91
+ ::SOAP::SOAPArray,
92
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
93
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.PortRange") }
94
+ )
95
+
96
+ EncodedRegistry.set(
97
+ VirtualServerProtocolArray,
98
+ ::SOAP::SOAPArray,
99
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
100
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.Protocol") }
101
+ )
102
+
103
+ EncodedRegistry.register(
104
+ :class => VirtualServerRegexReplacement,
105
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.RegexReplacement"),
106
+ :schema_element => [
107
+ ["regex", ["SOAP::SOAPString", XSD::QName.new(nil, "regex")]],
108
+ ["replacement", ["SOAP::SOAPString", XSD::QName.new(nil, "replacement")]]
109
+ ]
110
+ )
111
+
112
+ EncodedRegistry.set(
113
+ VirtualServerRegexReplacementArray,
114
+ ::SOAP::SOAPArray,
115
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
116
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.RegexReplacement") }
117
+ )
118
+
119
+ EncodedRegistry.register(
120
+ :class => VirtualServerRule,
121
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.Rule"),
122
+ :schema_element => [
123
+ ["name", ["SOAP::SOAPString", XSD::QName.new(nil, "name")]],
124
+ ["enabled", ["SOAP::SOAPBoolean", XSD::QName.new(nil, "enabled")]],
125
+ ["run_frequency", ["VirtualServerRuleRunFlag", XSD::QName.new(nil, "run_frequency")]]
126
+ ]
127
+ )
128
+
129
+ EncodedRegistry.set(
130
+ VirtualServerRuleArray,
131
+ ::SOAP::SOAPArray,
132
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
133
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.Rule") }
134
+ )
135
+
136
+ EncodedRegistry.set(
137
+ VirtualServerRuleArrayArray,
138
+ ::SOAP::SOAPArray,
139
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
140
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.RuleArray") }
141
+ )
142
+
143
+ EncodedRegistry.set(
144
+ VirtualServerSIPDangerousRequestModeArray,
145
+ ::SOAP::SOAPArray,
146
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
147
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.SIPDangerousRequestMode") }
148
+ )
149
+
150
+ EncodedRegistry.set(
151
+ VirtualServerSIPModeArray,
152
+ ::SOAP::SOAPArray,
153
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
154
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.SIPMode") }
155
+ )
156
+
157
+ EncodedRegistry.set(
158
+ VirtualServerSSLClientCertificateHeadersArray,
159
+ ::SOAP::SOAPArray,
160
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
161
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.SSLClientCertificateHeaders") }
162
+ )
163
+
164
+ EncodedRegistry.set(
165
+ VirtualServerSSLRequestClientCertModeArray,
166
+ ::SOAP::SOAPArray,
167
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
168
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.SSLRequestClientCertMode") }
169
+ )
170
+
171
+ EncodedRegistry.register(
172
+ :class => VirtualServerSSLSite,
173
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.SSLSite"),
174
+ :schema_element => [
175
+ ["dest_address", ["SOAP::SOAPString", XSD::QName.new(nil, "dest_address")]],
176
+ ["certificate", ["SOAP::SOAPString", XSD::QName.new(nil, "certificate")]]
177
+ ]
178
+ )
179
+
180
+ EncodedRegistry.set(
181
+ VirtualServerSSLSiteArray,
182
+ ::SOAP::SOAPArray,
183
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
184
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.SSLSite") }
185
+ )
186
+
187
+ EncodedRegistry.set(
188
+ VirtualServerSSLSiteArrayArray,
189
+ ::SOAP::SOAPArray,
190
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
191
+ { :type => XSD::QName.new(NsC_10, "VirtualServer.SSLSiteArray") }
192
+ )
193
+
194
+ EncodedRegistry.set(
195
+ BooleanArray,
196
+ ::SOAP::SOAPArray,
197
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
198
+ { :type => XSD::QName.new("http://www.w3.org/2001/XMLSchema", "boolean") }
199
+ )
200
+
201
+ EncodedRegistry.set(
202
+ BooleanArrayArray,
203
+ ::SOAP::SOAPArray,
204
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
205
+ { :type => XSD::QName.new(NsC_10, "booleanArray") }
206
+ )
207
+
208
+ EncodedRegistry.set(
209
+ IntArray,
210
+ ::SOAP::SOAPArray,
211
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
212
+ { :type => XSD::QName.new("http://www.w3.org/2001/XMLSchema", "int") }
213
+ )
214
+
215
+ EncodedRegistry.set(
216
+ UnsignedIntArray,
217
+ ::SOAP::SOAPArray,
218
+ ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory,
219
+ { :type => XSD::QName.new("http://www.w3.org/2001/XMLSchema", "unsignedInt") }
220
+ )
221
+
222
+ EncodedRegistry.register(
223
+ :class => VirtualServerCookieDomainRewriteMode,
224
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.CookieDomainRewriteMode")
225
+ )
226
+
227
+ EncodedRegistry.register(
228
+ :class => VirtualServerCookieSecureFlagRewriteMode,
229
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.CookieSecureFlagRewriteMode")
230
+ )
231
+
232
+ EncodedRegistry.register(
233
+ :class => VirtualServerLocationDefaultRewriteMode,
234
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.LocationDefaultRewriteMode")
235
+ )
236
+
237
+ EncodedRegistry.register(
238
+ :class => VirtualServerProtocol,
239
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.Protocol")
240
+ )
241
+
242
+ EncodedRegistry.register(
243
+ :class => VirtualServerRuleRunFlag,
244
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.RuleRunFlag")
245
+ )
246
+
247
+ EncodedRegistry.register(
248
+ :class => VirtualServerSIPDangerousRequestMode,
249
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.SIPDangerousRequestMode")
250
+ )
251
+
252
+ EncodedRegistry.register(
253
+ :class => VirtualServerSIPMode,
254
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.SIPMode")
255
+ )
256
+
257
+ EncodedRegistry.register(
258
+ :class => VirtualServerSSLClientCertificateHeaders,
259
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.SSLClientCertificateHeaders")
260
+ )
261
+
262
+ EncodedRegistry.register(
263
+ :class => VirtualServerSSLRequestClientCertMode,
264
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.SSLRequestClientCertMode")
265
+ )
266
+
267
+ LiteralRegistry.register(
268
+ :class => VirtualServerBasicInfo,
269
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.BasicInfo"),
270
+ :schema_element => [
271
+ ["port", ["SOAP::SOAPInt", XSD::QName.new(nil, "port")]],
272
+ ["protocol", ["VirtualServerProtocol", XSD::QName.new(nil, "protocol")]],
273
+ ["default_pool", ["SOAP::SOAPString", XSD::QName.new(nil, "default_pool")]]
274
+ ]
275
+ )
276
+
277
+ LiteralRegistry.register(
278
+ :class => VirtualServerFTPPortRange,
279
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.FTPPortRange"),
280
+ :schema_element => [
281
+ ["low", ["SOAP::SOAPInt", XSD::QName.new(nil, "low")]],
282
+ ["high", ["SOAP::SOAPInt", XSD::QName.new(nil, "high")]]
283
+ ]
284
+ )
285
+
286
+ LiteralRegistry.register(
287
+ :class => VirtualServerPortRange,
288
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.PortRange"),
289
+ :schema_element => [
290
+ ["low", ["SOAP::SOAPInt", XSD::QName.new(nil, "low")]],
291
+ ["high", ["SOAP::SOAPInt", XSD::QName.new(nil, "high")]]
292
+ ]
293
+ )
294
+
295
+ LiteralRegistry.register(
296
+ :class => VirtualServerRegexReplacement,
297
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.RegexReplacement"),
298
+ :schema_element => [
299
+ ["regex", ["SOAP::SOAPString", XSD::QName.new(nil, "regex")]],
300
+ ["replacement", ["SOAP::SOAPString", XSD::QName.new(nil, "replacement")]]
301
+ ]
302
+ )
303
+
304
+ LiteralRegistry.register(
305
+ :class => VirtualServerRule,
306
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.Rule"),
307
+ :schema_element => [
308
+ ["name", ["SOAP::SOAPString", XSD::QName.new(nil, "name")]],
309
+ ["enabled", ["SOAP::SOAPBoolean", XSD::QName.new(nil, "enabled")]],
310
+ ["run_frequency", ["VirtualServerRuleRunFlag", XSD::QName.new(nil, "run_frequency")]]
311
+ ]
312
+ )
313
+
314
+ LiteralRegistry.register(
315
+ :class => VirtualServerSSLSite,
316
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.SSLSite"),
317
+ :schema_element => [
318
+ ["dest_address", ["SOAP::SOAPString", XSD::QName.new(nil, "dest_address")]],
319
+ ["certificate", ["SOAP::SOAPString", XSD::QName.new(nil, "certificate")]]
320
+ ]
321
+ )
322
+
323
+ LiteralRegistry.register(
324
+ :class => VirtualServerCookieDomainRewriteMode,
325
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.CookieDomainRewriteMode")
326
+ )
327
+
328
+ LiteralRegistry.register(
329
+ :class => VirtualServerCookieSecureFlagRewriteMode,
330
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.CookieSecureFlagRewriteMode")
331
+ )
332
+
333
+ LiteralRegistry.register(
334
+ :class => VirtualServerLocationDefaultRewriteMode,
335
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.LocationDefaultRewriteMode")
336
+ )
337
+
338
+ LiteralRegistry.register(
339
+ :class => VirtualServerProtocol,
340
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.Protocol")
341
+ )
342
+
343
+ LiteralRegistry.register(
344
+ :class => VirtualServerRuleRunFlag,
345
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.RuleRunFlag")
346
+ )
347
+
348
+ LiteralRegistry.register(
349
+ :class => VirtualServerSIPDangerousRequestMode,
350
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.SIPDangerousRequestMode")
351
+ )
352
+
353
+ LiteralRegistry.register(
354
+ :class => VirtualServerSIPMode,
355
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.SIPMode")
356
+ )
357
+
358
+ LiteralRegistry.register(
359
+ :class => VirtualServerSSLClientCertificateHeaders,
360
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.SSLClientCertificateHeaders")
361
+ )
362
+
363
+ LiteralRegistry.register(
364
+ :class => VirtualServerSSLRequestClientCertMode,
365
+ :schema_type => XSD::QName.new(NsC_10, "VirtualServer.SSLRequestClientCertMode")
366
+ )
367
+ end
@@ -0,0 +1,156 @@
1
+
2
+ #
3
+ # VirtualServerService
4
+ #
5
+ # This class provides a facade for SOAP method calls to the
6
+ # ZXTM Virtual Server web service.
7
+ class VirtualServerService
8
+
9
+ attr_accessor :driver
10
+
11
+ def initialize(endpoint=nil, username=nil, password=nil)
12
+ @driver = VirtualServerPort.new(endpoint)
13
+ @driver.options["protocol.http.ssl_config.verify_mode"] = OpenSSL::SSL::VERIFY_NONE
14
+ @driver.options["protocol.http.basic_auth"] << [endpoint, username, password]
15
+ end
16
+
17
+ # Returns a list of virtual servers
18
+ #
19
+ # Args
20
+ # status - Symbol (possible values: :all, :enabled, :disabled)
21
+ #
22
+ # Examples
23
+ # names(:all) - Returns all virtual server names (default)
24
+ # names(:enabled) - Returns enabled virtual server names
25
+ # names(:disabled) - Returns disabled virtual server names
26
+ #
27
+ def list(status=nil)
28
+ result = []
29
+ valid_status = [:all, :enabled, :disabled]
30
+ status = :all if status.nil? or !valid_status.include?(status)
31
+
32
+ vs_names = @driver.getVirtualServerNames
33
+ return vs_names if status == :all
34
+
35
+ enabled_vs = @driver.getEnabled(vs_names)
36
+
37
+ case status
38
+ when :enabled
39
+ vs_names.length.times do |i|
40
+ result << vs_names[i] if enabled_vs[i]
41
+ end
42
+ when :disabled
43
+ vs_names.length.times do |i|
44
+ result << vs_names[i] unless enabled_vs[i]
45
+ end
46
+ end
47
+
48
+ return result
49
+ end
50
+
51
+ # Creates new virtual server
52
+ #
53
+ # Args
54
+ # name (String) - Virtual server's name
55
+ # vs_info (Hash) - Virtual server's properties
56
+ #
57
+ # Examples
58
+ # create("web") - Creates new virtual server called "web" with default properties
59
+ # create("web", {:port => "80", :protocol => "http", :default_pool => "web-pool"})
60
+ #
61
+ def create(name=nil, vs_info={})
62
+ default_port = "80"
63
+ default_protocol = "http"
64
+ default_pool = "discard"
65
+
66
+ vs_basic_info = VirtualServerBasicInfo.new
67
+ vs_basic_info.port = vs_info[:port] || default_port
68
+ vs_basic_info.protocol = vs_info[:protocol] || default_protocol
69
+ vs_basic_info.default_pool = vs_info[:default_pool] || default_pool
70
+
71
+ @driver.addVirtualServer([name], [vs_basic_info])
72
+ end
73
+
74
+ # Enables a virtual server
75
+ #
76
+ # Args
77
+ # name (String) - Virtual server's name to enable
78
+ #
79
+ # Examples
80
+ # enable("web") - Enables a virtual server called "web"
81
+ #
82
+ def enable(vs_name=nil)
83
+ @driver.setEnabled([vs_name], [true])
84
+ end
85
+
86
+ # Disables a virtual server
87
+ #
88
+ # Args
89
+ # name (String) - Virtual server's name to disable
90
+ #
91
+ # Examples
92
+ # disable("web") - Disables a virtual server called "web"
93
+ #
94
+ def disable(vs_name=nil)
95
+ @driver.setEnabled([vs_name], [false])
96
+ end
97
+
98
+ # Adds a request rule (and enables it)
99
+ #
100
+ # Args
101
+ # name (String) - Virtual server's name
102
+ # rule (String) - Rule name
103
+ #
104
+ # Examples
105
+ # add_request_rule("test", "some-rule")
106
+ #
107
+ def add_request_rule(vs_name, rule)
108
+ vsr = VirtualServerRule.new
109
+ vsr.name = rule
110
+ vsr.enabled = true
111
+ @driver.addRules([vs_name],[[vsr]])
112
+ end
113
+
114
+ # Removes a request rule
115
+ #
116
+ # Args
117
+ # name (String) - Virtual server's name
118
+ # rule (String) - Rule name
119
+ #
120
+ # Examples
121
+ # remove_request_rule("test", "some-rule")
122
+ #
123
+ def remove_request_rule(vs_name, rule)
124
+ @driver.removeRules([vs_name], [[rule]])
125
+ end
126
+
127
+ # Adds a response rule (and enables it)
128
+ #
129
+ # Args
130
+ # name (String) - Virtual server's name
131
+ # rule (String) - Rule name
132
+ #
133
+ # Examples
134
+ # add_request_rule("test", "some-rule")
135
+ #
136
+ def add_response_rule(vs_name, rule)
137
+ vsr = VirtualServerRule.new
138
+ vsr.name = rule
139
+ vsr.enabled = true
140
+ @driver.addResponseRules([vs_name], [[vsr]])
141
+ end
142
+
143
+ # Removes a response rule
144
+ #
145
+ # Args
146
+ # name (String) - Virtual server's name
147
+ # rule (String) - Rule name
148
+ #
149
+ # Examples
150
+ # remove_response_rule("test", "some-rule")
151
+ #
152
+ def remove_response_rule(vs_name, rule)
153
+ @driver.removeResponseRules([vs_name], [[rule]])
154
+ end
155
+
156
+ end