zeus-api 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.
@@ -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