zaws 0.0.5 → 0.1.1

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.
Files changed (282) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.travis.yml +9 -18
  4. data/Gemfile +0 -0
  5. data/Gemfile.lock +26 -35
  6. data/Gemfile.lock.linux +69 -0
  7. data/Gemfile.lock.mac +81 -0
  8. data/Gemfile.lock.windows +77 -0
  9. data/LICENSE +0 -0
  10. data/README.md +11 -0
  11. data/Rakefile +1 -7
  12. data/archive/cloud_trail/cloud_trail.feature +124 -0
  13. data/bin/win_zaws.bat +2 -0
  14. data/lib/zaws.rb +54 -41
  15. data/lib/zaws/command/ai.rb +34 -0
  16. data/lib/zaws/command/bucket.rb +35 -0
  17. data/lib/zaws/command/cloud_trail.rb +43 -0
  18. data/lib/zaws/command/compute.rb +152 -87
  19. data/lib/zaws/command/config.rb +42 -0
  20. data/lib/zaws/command/elasticip.rb +19 -9
  21. data/lib/zaws/command/hosted_zone.rb +31 -18
  22. data/lib/zaws/command/iam.rb +37 -0
  23. data/lib/zaws/command/load_balancer.rb +54 -51
  24. data/lib/zaws/command/nessus.rb +41 -0
  25. data/lib/zaws/command/newrelic.rb +30 -0
  26. data/lib/zaws/command/route_table.rb +135 -122
  27. data/lib/zaws/command/security_group.rb +95 -82
  28. data/lib/zaws/command/subnet.rb +58 -46
  29. data/lib/zaws/command/sumo.rb +34 -0
  30. data/lib/zaws/command/vpc.rb +53 -0
  31. data/lib/zaws/external/awscli/awscli.rb +65 -0
  32. data/lib/zaws/external/awscli/commands.rb +10 -0
  33. data/lib/zaws/external/awscli/commands/aws.rb +40 -0
  34. data/lib/zaws/external/awscli/commands/ec2.rb +74 -0
  35. data/lib/zaws/external/awscli/commands/ec2/allocate_address.rb +42 -0
  36. data/lib/zaws/external/awscli/commands/ec2/assign_private_ip_addresses.rb +49 -0
  37. data/lib/zaws/external/awscli/commands/ec2/associate_address.rb +48 -0
  38. data/lib/zaws/external/awscli/commands/ec2/associate_route_table.rb +48 -0
  39. data/lib/zaws/external/awscli/commands/ec2/authorize_security_group_ingress.rb +70 -0
  40. data/lib/zaws/external/awscli/commands/ec2/create_route.rb +60 -0
  41. data/lib/zaws/external/awscli/commands/ec2/create_route_table.rb +40 -0
  42. data/lib/zaws/external/awscli/commands/ec2/create_security_group.rb +58 -0
  43. data/lib/zaws/external/awscli/commands/ec2/create_subnet.rb +62 -0
  44. data/lib/zaws/external/awscli/commands/ec2/create_tags.rb +53 -0
  45. data/lib/zaws/external/awscli/commands/ec2/create_vpc.rb +21 -0
  46. data/lib/zaws/external/awscli/commands/ec2/delete_route.rb +54 -0
  47. data/lib/zaws/external/awscli/commands/ec2/delete_route_table.rb +46 -0
  48. data/lib/zaws/external/awscli/commands/ec2/delete_security_group.rb +46 -0
  49. data/lib/zaws/external/awscli/commands/ec2/delete_subnet.rb +46 -0
  50. data/lib/zaws/external/awscli/commands/ec2/describe_addresses.rb +41 -0
  51. data/lib/zaws/external/awscli/commands/ec2/describe_images.rb +58 -0
  52. data/lib/zaws/external/awscli/commands/ec2/describe_instances.rb +56 -0
  53. data/lib/zaws/external/awscli/commands/ec2/describe_route_tables.rb +44 -0
  54. data/lib/zaws/external/awscli/commands/ec2/describe_security_groups.rb +50 -0
  55. data/lib/zaws/external/awscli/commands/ec2/describe_subnets.rb +48 -0
  56. data/lib/zaws/external/awscli/commands/ec2/describe_vpc_peering_connections.rb +23 -0
  57. data/lib/zaws/external/awscli/commands/ec2/describe_vpcs.rb +26 -0
  58. data/lib/zaws/external/awscli/commands/ec2/disable_vgw_route_propagation.rb +48 -0
  59. data/lib/zaws/external/awscli/commands/ec2/disassociate-address.rb +42 -0
  60. data/lib/zaws/external/awscli/commands/ec2/disassociate_route_table.rb +41 -0
  61. data/lib/zaws/external/awscli/commands/ec2/enable_vgw_route_propagation.rb +48 -0
  62. data/lib/zaws/external/awscli/commands/ec2/filter.rb +115 -0
  63. data/lib/zaws/external/awscli/commands/ec2/modify_instance_attribute.rb +62 -0
  64. data/lib/zaws/external/awscli/commands/ec2/network_interfaces.rb +63 -0
  65. data/lib/zaws/external/awscli/commands/ec2/release_address.rb +42 -0
  66. data/lib/zaws/external/awscli/commands/ec2/revoke_security_group_ingress.rb +70 -0
  67. data/lib/zaws/external/awscli/commands/ec2/run_instances.rb +21 -0
  68. data/lib/zaws/external/awscli/commands/ec2/stop_instances.rb +21 -0
  69. data/lib/zaws/external/awscli/commands/ec2/terminate_instances.rb +40 -0
  70. data/lib/zaws/external/awscli/commands/ec2/unassign_private_ip_addresses.rb +49 -0
  71. data/lib/zaws/external/awscli/commands/elb.rb +19 -0
  72. data/lib/zaws/external/awscli/commands/elb/create_load_balancer.rb +64 -0
  73. data/lib/zaws/external/awscli/commands/elb/create_load_balancer_listeners.rb +47 -0
  74. data/lib/zaws/external/awscli/commands/elb/delete_load_balancer.rb +40 -0
  75. data/lib/zaws/external/awscli/commands/elb/delete_load_balancer_listeners.rb +49 -0
  76. data/lib/zaws/external/awscli/commands/elb/deregister_instances_with_load_balancer.rb +49 -0
  77. data/lib/zaws/external/awscli/commands/elb/describe_load_balancers.rb +30 -0
  78. data/lib/zaws/external/awscli/commands/elb/register_instances_with_load_balancer.rb +49 -0
  79. data/lib/zaws/external/awscli/commands/iam.rb +31 -0
  80. data/lib/zaws/external/awscli/commands/iam/GetPolicy.rb +21 -0
  81. data/lib/zaws/external/awscli/commands/iam/GetPolicyVersion.rb +21 -0
  82. data/lib/zaws/external/awscli/commands/iam/GetRolePolicy.rb +21 -0
  83. data/lib/zaws/external/awscli/commands/route53.rb +19 -0
  84. data/lib/zaws/external/awscli/commands/route53/list_hosted_zones.rb +30 -0
  85. data/lib/zaws/external/awscli/commands/route53/list_resource_record_sets.rb +41 -0
  86. data/lib/zaws/external/awscli/commands/s3/ls.rb +34 -0
  87. data/lib/zaws/external/awscli/commands/s3/mb.rb +41 -0
  88. data/lib/zaws/external/awscli/commands/s3/sync.rb +48 -0
  89. data/lib/zaws/external/awscli/credentials.rb +22 -0
  90. data/lib/zaws/external/awscli/data.rb +10 -0
  91. data/lib/zaws/external/awscli/data/ec2.rb +33 -0
  92. data/lib/zaws/external/awscli/data/ec2/instance.rb +162 -0
  93. data/lib/zaws/external/awscli/data/ec2/security_group.rb +51 -0
  94. data/lib/zaws/external/awscli/data/ec2/subnet.rb +59 -0
  95. data/lib/zaws/external/awscli/data/ec2/vpc.rb +85 -0
  96. data/lib/zaws/external/awscli/data/iam.rb +34 -0
  97. data/lib/zaws/external/awscli/data/iam/policy.rb +42 -0
  98. data/lib/zaws/external/awscli/data/iam/policy_document.rb +52 -0
  99. data/lib/zaws/external/awscli/data/iam/policy_version.rb +42 -0
  100. data/lib/zaws/external/awscli/data/iam/role_policy.rb +52 -0
  101. data/lib/zaws/external/awscli/generators/result/ec2/addresses.rb +70 -0
  102. data/lib/zaws/external/awscli/generators/result/ec2/allocation_id.rb +39 -0
  103. data/lib/zaws/external/awscli/generators/result/ec2/association_id.rb +29 -0
  104. data/lib/zaws/external/awscli/generators/result/ec2/images.rb +46 -0
  105. data/lib/zaws/external/awscli/generators/result/ec2/instances.rb +57 -0
  106. data/lib/zaws/external/awscli/generators/result/ec2/ip_permissions.rb +70 -0
  107. data/lib/zaws/external/awscli/generators/result/ec2/network_interfaces.rb +53 -0
  108. data/lib/zaws/external/awscli/generators/result/ec2/private_ip_addresses.rb +41 -0
  109. data/lib/zaws/external/awscli/generators/result/ec2/route_tables.rb +80 -0
  110. data/lib/zaws/external/awscli/generators/result/ec2/routes.rb +58 -0
  111. data/lib/zaws/external/awscli/generators/result/ec2/security_groups.rb +73 -0
  112. data/lib/zaws/external/awscli/generators/result/ec2/subnets.rb +88 -0
  113. data/lib/zaws/external/awscli/generators/result/ec2/tags.rb +34 -0
  114. data/lib/zaws/external/awscli/generators/result/ec2/virtual_gateway.rb +32 -0
  115. data/lib/zaws/external/awscli/generators/result/elb/listeners.rb +65 -0
  116. data/lib/zaws/external/awscli/generators/result/elb/load_balancers.rb +61 -0
  117. data/lib/zaws/external/awscli/generators/result/route53/hosted_zones.rb +52 -0
  118. data/lib/zaws/external/awscli/regions.rb +13 -0
  119. data/lib/zaws/external/nessusapi/data/agents.rb +36 -0
  120. data/lib/zaws/external/nessusapi/data/scanners.rb +35 -0
  121. data/lib/zaws/external/nessusapi/nessusapi.rb +57 -0
  122. data/lib/zaws/external/nessusapi/reources.rb +10 -0
  123. data/lib/zaws/external/nessusapi/resources/agents.rb +18 -0
  124. data/lib/zaws/external/nessusapi/resources/agents/list.rb +20 -0
  125. data/lib/zaws/external/nessusapi/resources/scanners.rb +18 -0
  126. data/lib/zaws/external/nessusapi/resources/scanners/list.rb +20 -0
  127. data/lib/zaws/external/newrelicapi/data/servers.rb +36 -0
  128. data/lib/zaws/external/newrelicapi/newrelic_client.rb +64 -0
  129. data/lib/zaws/external/newrelicapi/newrelic_creds.rb +60 -0
  130. data/lib/zaws/external/newrelicapi/newrelicapi.rb +46 -0
  131. data/lib/zaws/external/newrelicapi/resources/servers.rb +18 -0
  132. data/lib/zaws/external/newrelicapi/resources/servers/list.rb +20 -0
  133. data/lib/zaws/external/sumoapi/data/collectors.rb +35 -0
  134. data/lib/zaws/external/sumoapi/data/sources.rb +35 -0
  135. data/lib/zaws/external/sumoapi/resources/collectors.rb +18 -0
  136. data/lib/zaws/external/sumoapi/resources/collectors/list.rb +20 -0
  137. data/lib/zaws/external/sumoapi/resources/sources.rb +18 -0
  138. data/lib/zaws/external/sumoapi/resources/sources/list.rb +20 -0
  139. data/lib/zaws/external/sumoapi/sumo_client.rb +63 -0
  140. data/lib/zaws/external/sumoapi/sumo_creds.rb +67 -0
  141. data/lib/zaws/external/sumoapi/sumoapi.rb +56 -0
  142. data/lib/zaws/helper/data_lattice.rb +22 -0
  143. data/lib/zaws/helper/filestore.rb +48 -0
  144. data/lib/zaws/helper/filter.rb +15 -0
  145. data/lib/zaws/helper/inifile.rb +632 -0
  146. data/lib/zaws/helper/nessus_client.rb +143 -0
  147. data/lib/zaws/helper/nessus_creds.rb +67 -0
  148. data/lib/zaws/helper/option.rb +14 -15
  149. data/lib/zaws/helper/output.rb +81 -29
  150. data/lib/zaws/helper/process_hash.rb +47 -0
  151. data/lib/zaws/helper/shell.rb +0 -0
  152. data/lib/zaws/helper/verbose.rb +15 -0
  153. data/lib/zaws/helper/zfile.rb +8 -8
  154. data/lib/zaws/services/ai.rb +35 -0
  155. data/lib/zaws/services/ai/query.rb +135 -0
  156. data/lib/zaws/services/aws.rb +41 -0
  157. data/lib/zaws/services/chef.rb +0 -0
  158. data/lib/zaws/services/cloud_trail.rb +76 -0
  159. data/lib/zaws/services/config.rb +31 -0
  160. data/lib/zaws/services/ec2.rb +47 -0
  161. data/lib/zaws/services/ec2/compute.rb +352 -0
  162. data/lib/zaws/services/ec2/elasticip.rb +82 -0
  163. data/lib/zaws/services/ec2/route_table.rb +210 -0
  164. data/lib/zaws/services/ec2/security_group.rb +186 -0
  165. data/lib/zaws/services/ec2/subnet.rb +111 -0
  166. data/lib/zaws/services/ec2/vpc.rb +69 -0
  167. data/lib/zaws/{elb.rb → services/elb.rb} +3 -2
  168. data/lib/zaws/services/elb/load_balancer.rb +160 -0
  169. data/lib/zaws/services/iam.rb +25 -0
  170. data/lib/zaws/services/iam/policy.rb +25 -0
  171. data/lib/zaws/services/iam/role.rb +23 -0
  172. data/lib/zaws/services/nessus.rb +24 -0
  173. data/lib/zaws/services/nessus/agents.rb +19 -0
  174. data/lib/zaws/services/nessus/scanners.rb +19 -0
  175. data/lib/zaws/services/newrelic.rb +21 -0
  176. data/lib/zaws/services/newrelic/servers.rb +19 -0
  177. data/lib/zaws/{route53.rb → services/route53.rb} +1 -1
  178. data/lib/zaws/services/route53/hosted_zone.rb +36 -0
  179. data/lib/zaws/services/s3.rb +15 -0
  180. data/lib/zaws/services/s3/bucket.rb +42 -0
  181. data/lib/zaws/services/sumo.rb +21 -0
  182. data/lib/zaws/services/sumo/collectors.rb +19 -0
  183. data/lib/zaws/services/vmware.rb +0 -0
  184. data/lib/zaws/version.rb +1 -1
  185. data/shove_all.sh +6 -0
  186. data/shove_all_mac.sh +6 -0
  187. data/shove_all_windows.sh +6 -0
  188. data/spec/spec_helper.rb +0 -0
  189. data/spec/zaws/command/ec2/compute/assoc_security_group_spec.rb +135 -0
  190. data/spec/zaws/command/ec2/compute/compute_spec.rb +321 -0
  191. data/spec/zaws/command/ec2/compute/images_spec.rb +69 -0
  192. data/spec/zaws/command/ec2/compute/management_spec.rb +364 -0
  193. data/spec/zaws/command/ec2/compute/network_spec.rb +93 -0
  194. data/spec/zaws/command/ec2/compute/node_spec.rb +70 -0
  195. data/spec/zaws/command/ec2/compute/secondary_ip_spec.rb +212 -0
  196. data/spec/zaws/command/ec2/compute/storage_spec.rb +63 -0
  197. data/spec/zaws/command/ec2/elasticip_spec.rb +271 -0
  198. data/spec/zaws/command/ec2/route_table_spec.rb +844 -0
  199. data/spec/zaws/command/ec2/security_group_spec.rb +710 -0
  200. data/spec/zaws/command/ec2/subnet_spec.rb +273 -0
  201. data/spec/zaws/command/ec2/vpc_spec.rb +180 -0
  202. data/spec/zaws/command/elb/load_balancer_spec.rb +633 -0
  203. data/spec/zaws/command/iam/policy_spec.rb +101 -0
  204. data/spec/zaws/command/iam/role_policy_spec.rb +35 -0
  205. data/spec/zaws/command/route53/hosted_zone_spec.rb +100 -0
  206. data/spec/zaws/command/s3/bucket_spec.rb +70 -0
  207. data/spec/zaws/external/awscli/data/ec2/instance_spec.rb +90 -0
  208. data/spec/zaws/external/awscli/data/iam/policy_document_spec.rb +56 -0
  209. data/spec/zaws/external/awscli/data/iam/role_policy_spec.rb +54 -0
  210. data/spec/zaws/external/awscli/get_aws_version_spec.rb +18 -0
  211. data/spec/zaws/helper/option_spec.rb +54 -0
  212. data/spec/zaws/helper/output_spec.rb +144 -0
  213. data/spec/zaws/helper/process_hash_spec.rb +48 -0
  214. data/spec/zaws/helper/shell_spec.rb +56 -0
  215. data/spec/zaws/nessus/scanners.json +0 -0
  216. data/spec/zaws/version_spec.rb +18 -0
  217. data/zaws.gemspec +1 -3
  218. metadata +260 -189
  219. data/feature/compute/assoc_security_group.feature +0 -55
  220. data/feature/compute/compute.feature +0 -138
  221. data/feature/compute/secondary_ip.feature +0 -107
  222. data/feature/compute/view.feature +0 -23
  223. data/feature/compute/view_images.feature +0 -24
  224. data/feature/elasticip/elasticip.feature +0 -138
  225. data/feature/elasticip/view.feature +0 -18
  226. data/feature/hosted_zone/view.feature +0 -17
  227. data/feature/hosted_zone/view_record.feature +0 -29
  228. data/feature/load_balancer/instance_registration.feature +0 -120
  229. data/feature/load_balancer/listener.feature +0 -86
  230. data/feature/load_balancer/load_balancer.feature +0 -101
  231. data/feature/load_balancer/view.feature +0 -18
  232. data/feature/route_table/assoc_subnet.feature +0 -128
  233. data/feature/route_table/route_propagation.feature +0 -93
  234. data/feature/route_table/route_table.feature +0 -91
  235. data/feature/route_table/route_to_gateway.feature +0 -69
  236. data/feature/route_table/route_to_instance.feature +0 -115
  237. data/feature/route_table/view.feature +0 -25
  238. data/feature/security_group/ingress_cidr.feature +0 -144
  239. data/feature/security_group/ingress_group.feature +0 -184
  240. data/feature/security_group/security_group.feature +0 -107
  241. data/feature/security_group/view.feature +0 -23
  242. data/feature/subnet/subnet.feature +0 -94
  243. data/feature/subnet/view.feature +0 -24
  244. data/feature/support/env.rb +0 -14
  245. data/feature/version.feature +0 -6
  246. data/lib/zaws/aws.rb +0 -26
  247. data/lib/zaws/ec2.rb +0 -40
  248. data/lib/zaws/ec2/compute.rb +0 -247
  249. data/lib/zaws/ec2/elasticip.rb +0 -79
  250. data/lib/zaws/ec2/route_table.rb +0 -207
  251. data/lib/zaws/ec2/security_group.rb +0 -154
  252. data/lib/zaws/ec2/subnet.rb +0 -109
  253. data/lib/zaws/elb/load_balancer.rb +0 -157
  254. data/lib/zaws/route53/hosted_zone.rb +0 -36
  255. data/spec/zaws/ec2/compute/add_volume_spec.rb +0 -39
  256. data/spec/zaws/ec2/compute/block_device_mapping_spec.rb +0 -31
  257. data/spec/zaws/ec2/compute/instance_id_by_external_id_spec.rb +0 -23
  258. data/spec/zaws/ec2/compute/instance_ping_spec.rb +0 -34
  259. data/spec/zaws/ec2/compute/instance_running_spec.rb +0 -47
  260. data/spec/zaws/ec2/compute/network_interface_json_spec.rb +0 -57
  261. data/spec/zaws/ec2/compute/nosdcheck_spec.rb +0 -17
  262. data/spec/zaws/ec2/compute/tag_instance_spec.rb +0 -21
  263. data/spec/zaws/ec2/security_group/id_by_name_spec.rb +0 -32
  264. data/spec/zaws/ec2/subnet/available_spec.rb +0 -22
  265. data/spec/zaws/ec2/subnet/declare_spec.rb +0 -31
  266. data/spec/zaws/ec2/subnet/exists_spec.rb +0 -33
  267. data/spec/zaws/ec2/subnet/id_array_by_cidrblock_array_spec.rb +0 -48
  268. data/spec/zaws/ec2/subnet/id_by_cidrblock_spec.rb +0 -35
  269. data/spec/zaws/ec2/subnet/id_by_ip_spec.rb +0 -42
  270. data/spec/zaws/ec2/subnet/view_spec.rb +0 -34
  271. data/spec/zaws/elb/load_balancer/calculated_listener_spec.rb +0 -18
  272. data/spec/zaws/helper/option/absent_spec.rb +0 -14
  273. data/spec/zaws/helper/option/exclusive_spec.rb +0 -14
  274. data/spec/zaws/helper/option/exists_spec.rb +0 -18
  275. data/spec/zaws/helper/option/minimum_spec.rb +0 -14
  276. data/spec/zaws/helper/output/binary_nagios_check_spec.rb +0 -19
  277. data/spec/zaws/helper/output/colorize_spec.rb +0 -30
  278. data/spec/zaws/helper/output/opt_exclusive_spec.rb +0 -14
  279. data/spec/zaws/helper/output/opt_minimum_spec.rb +0 -15
  280. data/spec/zaws/helper/output/opt_required_spec.rb +0 -12
  281. data/spec/zaws/helper/shell/cli_spec.rb +0 -33
  282. data/spec/zaws/helper/shell/if_then_spec.rb +0 -24
@@ -0,0 +1,35 @@
1
+ module ZAWS
2
+ class Nessusapi
3
+ class Data
4
+ class Scanners
5
+
6
+ def initialize(shellout, nessusapi)
7
+ @shellout=shellout
8
+ @nessusapi=nessusapi
9
+ @instance_hash=nil
10
+ end
11
+
12
+ def validJSON
13
+ return (@instance_hash.nil?)
14
+ end
15
+
16
+ def load(data, verbose)
17
+ @instance_raw_data = data
18
+ verbose.puts(@instance_raw_data) if verbose
19
+ @instance_hash=data
20
+ end
21
+
22
+ def view(verbose)
23
+ details = @nessusapi.filestore.retrieve("scanners")
24
+ if details.nil?
25
+ load(@nessusapi.resource_scanners.list.execute(verbose),verbose)
26
+ @nessusapi.filestore.store("scanners",@instance_hash,Time.now + @nessusapi.filestore.timeout)
27
+ else
28
+ load(details,verbose)
29
+ end
30
+ return @instance_raw_data
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,57 @@
1
+ module ZAWS
2
+ class Nessusapi
3
+
4
+ attr_accessor :home
5
+
6
+ def initialize(shellout)
7
+ @shellout=shellout
8
+ end
9
+
10
+ def filestore
11
+ @filestore ||= ZAWS::Repository::Filestore.new()
12
+ @filestore.location="#{@home}/.nessusapi"
13
+ unless File.directory?(@filestore.location)
14
+ FileUtils.mkdir_p(@filestore.location)
15
+ end
16
+ @filestore.timeout = 600
17
+ return @filestore
18
+ end
19
+
20
+ def remove_creds
21
+ if File.directory?("#{@home}/.nessusapi")
22
+ FileUtils.rmtree("#{@home}/.nessusapi")
23
+ end
24
+ if File.exist?("#{@home}/.nessus.yml")
25
+ File.delete("#{@home}/.nessus.yml")
26
+ end
27
+ end
28
+
29
+ def resource_scanners
30
+ @_resource_scanners ||= (ZAWS::Nessusapi::Resources::Scanners.new(@shellout, self))
31
+ return @_resource_scanners
32
+ end
33
+
34
+ def resource_agents
35
+ @_resource_agents ||= (ZAWS::Nessusapi::Resources::Agents.new(@shellout, self))
36
+ return @_resource_agents
37
+ end
38
+
39
+ def client
40
+ fail("Home is null! Make sure its set before getting the client.") if @home== nil
41
+ creds = ZAWS::Helper::NessusCreds::Creds::YamlFile.new(@home)
42
+ @_client ||= (ZAWS::Helper::NessusClient.new(creds))
43
+ end
44
+
45
+ def data_scanners
46
+ @_data_scanners ||= (ZAWS::Nessusapi::Data::Scanners.new(@shellout, self))
47
+ return @_data_scanners
48
+ end
49
+
50
+ def data_agents
51
+ @_data_agents ||= (ZAWS::Nessusapi::Data::Agents.new(@shellout, self))
52
+ return @_data_agents
53
+ end
54
+
55
+ end
56
+ end
57
+
@@ -0,0 +1,10 @@
1
+ # module ZAWS
2
+ # class Nessusapi
3
+ # class Resources
4
+ # def initialize(shellout, nessusapi)
5
+ # @shellout=shellout
6
+ # @nessusapi=nessusapi
7
+ # end
8
+ # end
9
+ # end
10
+ # end
@@ -0,0 +1,18 @@
1
+ module ZAWS
2
+ class Nessusapi
3
+ class Resources
4
+ class Agents
5
+ def initialize(shellout, nessusapi)
6
+ @shellout=shellout
7
+ @nessusapi=nessusapi
8
+ end
9
+
10
+ def list
11
+ @_list ||= (ZAWS::Nessusapi::Resources::Agents::List.new(@shellout, @nessusapi))
12
+ return @_list
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,20 @@
1
+ module ZAWS
2
+ class Nessusapi
3
+ class Resources
4
+ class Agents
5
+ class List
6
+
7
+ def initialize(shellout,nessusapi)
8
+ @shellout=shellout
9
+ @nessusapi=nessusapi
10
+ end
11
+
12
+ def execute(scanner,verbose=nil)
13
+ @nessusapi.client.get("/scanners/#{scanner}/agents")
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ module ZAWS
2
+ class Nessusapi
3
+ class Resources
4
+ class Scanners
5
+ def initialize(shellout, nessusapi)
6
+ @shellout=shellout
7
+ @nessusapi=nessusapi
8
+ end
9
+
10
+ def list
11
+ @_list ||= (ZAWS::Nessusapi::Resources::Scanners::List.new(@shellout, @nessusapi))
12
+ return @_list
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,20 @@
1
+ module ZAWS
2
+ class Nessusapi
3
+ class Resources
4
+ class Scanners
5
+ class List
6
+
7
+ def initialize(shellout,nessusapi)
8
+ @shellout=shellout
9
+ @nessusapi=nessusapi
10
+ end
11
+
12
+ def execute(verbose=nil)
13
+ @nessusapi.client.get("/scanners")
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,36 @@
1
+ module ZAWS
2
+ class Newrelicapi
3
+ class Data
4
+ class Servers
5
+
6
+ def initialize(shellout, newrelicapi)
7
+ @shellout=shellout
8
+ @newrelicapi=newrelicapi
9
+ @instance_hash=nil
10
+ end
11
+
12
+ def validJSON
13
+ return (@instance_hash.nil?)
14
+ end
15
+
16
+ def load(data, verbose)
17
+ @instance_raw_data = data
18
+ verbose.puts(@instance_raw_data) if verbose
19
+ @instance_hash=data
20
+ end
21
+
22
+ def view(verbose)
23
+ details = @newrelicapi.filestore.retrieve("serversjson")
24
+ if details.nil?
25
+ load(@newrelicapi.resource_servers.list.execute(verbose),verbose)
26
+ @newrelicapi.filestore.store("serversjson",@instance_hash,Time.now + @newrelicapi.filestore.timeout)
27
+ else
28
+ load(details,verbose)
29
+ end
30
+ return @instance_raw_data
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,64 @@
1
+ require 'excon'
2
+ require 'json'
3
+
4
+ module ZAWS
5
+ class Newrelicapi
6
+ class NewrelicClient
7
+
8
+ autoload :NewrelicCreds, "zaws/newrelicapi/newrelic_creds"
9
+
10
+ # @param [SumoClient::Creds] creds
11
+ def initialize(creds)
12
+ @creds = creds
13
+ end
14
+
15
+ def url
16
+ @creds.url
17
+ end
18
+
19
+ # Make a GET request expecting a JSON response.
20
+ def get(path, query = {}, options = {})
21
+ # Handle nil or empty Array
22
+ options[:query] = query.to_h if query
23
+ options[:idempotent] = true
24
+ json_request('GET', path, options)
25
+ end
26
+
27
+ # Make a POST request expecting a JSON response.
28
+ def post(path, body, options = {})
29
+ options[:body] = body
30
+ json_request('POST', path, options)
31
+ end
32
+
33
+ # Make a PUT request expecting a JSON response.
34
+ def put(path, body, options = {})
35
+ options[:body] = body
36
+ json_request('PUT', path, options)
37
+ end
38
+
39
+ def delete(path, options = {})
40
+ options[:idempotent] = true
41
+ json_request('DELETE', path, options)
42
+ end
43
+
44
+ def json_request(method, path, options = {})
45
+ if options[:body] && !options[:body].instance_of?(String)
46
+ options[:body] = options[:body].to_json
47
+ end
48
+ options[:headers] ||= {}
49
+ options[:headers]['Content-Type'] = 'application/json'
50
+ response = request(method, path, options)
51
+ JSON.parse(response.body) if (response.body.length > 0 && response.headers['content-type'].match(/json/))
52
+ end
53
+
54
+ def request(method, path, options = {})
55
+ connection = Excon.new(@creds.url)
56
+ options[:expects] ||= [200]
57
+ options[:method] = method
58
+ options[:path] = path
59
+ options[:headers]['X-api-key'] = "#{@creds.api_key}"
60
+ connection.request(options)
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,60 @@
1
+ require 'yaml'
2
+
3
+ module ZAWS
4
+ class Newrelicapi
5
+ class NewrelicCreds
6
+ # Simple container for credentials
7
+ class Creds
8
+
9
+ # @param [String] newrelic_url
10
+ # @param [String] api_key
11
+ def initialize(newrelic_url, api_key)
12
+ @creds = {}
13
+ @creds[:url] = newrelic_url
14
+ @creds[:api_key] = api_key
15
+ end
16
+
17
+ def url
18
+ fetch_creds[:url]
19
+ end
20
+
21
+ def api_key
22
+ fetch_creds[:api_key]
23
+ end
24
+
25
+ private
26
+
27
+ def fetch_creds
28
+ # Nothing to do in the base class
29
+ @creds
30
+ end
31
+ end
32
+
33
+ # Subclass that loads creds from a YAML file.
34
+ class Creds::YamlFile < Creds
35
+ FILENAME = '.newrelic.yml'
36
+
37
+ def initialize(home)
38
+ @creds_file = File.join(home, FILENAME)
39
+ end
40
+
41
+ private
42
+
43
+ def fetch_creds
44
+ unless @creds
45
+ fail("Missing file #{@creds_file}") unless File.exist?(@creds_file)
46
+ file_creds = YAML.load(File.read(@creds_file))
47
+ file_creds ||= {}
48
+ ['url', 'apiKey'].each do |key|
49
+ fail("Missing #{key} value in #{@creds_file}") unless file_creds[key]
50
+ end
51
+ @creds = {}
52
+ @creds[:url] = file_creds['url']
53
+ @creds[:api_key] = file_creds['apiKey']
54
+ end
55
+ @creds
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,46 @@
1
+ module ZAWS
2
+ class Newrelicapi
3
+
4
+ attr_accessor :home
5
+
6
+ def initialize(shellout)
7
+ @shellout=shellout
8
+ end
9
+
10
+ def filestore
11
+ @filestore ||= ZAWS::Repository::Filestore.new()
12
+ @filestore.location="#{@home}/.newrelicapi"
13
+ unless File.directory?(@filestore.location)
14
+ FileUtils.mkdir_p(@filestore.location)
15
+ end
16
+ @filestore.timeout = 600
17
+ return @filestore
18
+ end
19
+
20
+ def remove_creds
21
+ if File.directory?("#{@home}/.newrelicapi")
22
+ FileUtils.rmtree("#{@home}/.newrelicapi")
23
+ end
24
+ if File.exist?("#{@home}/.newrelic.yml")
25
+ File.delete("#{@home}/.newrelic.yml")
26
+ end
27
+ end
28
+
29
+ def resource_servers
30
+ @_resource_servers ||= (ZAWS::Newrelicapi::Resources::Servers.new(@shellout, self))
31
+ return @_resource_servers
32
+ end
33
+
34
+ def client
35
+ fail("Home is null! Make sure its set before getting the client.") if @home== nil
36
+ creds = ZAWS::Newrelicapi::NewrelicCreds::Creds::YamlFile.new(@home)
37
+ @_client ||= (ZAWS::Newrelicapi::NewrelicClient.new(creds))
38
+ end
39
+
40
+ def data_servers
41
+ @_data_servers ||= (ZAWS::Newrelicapi::Data::Servers.new(@shellout, self))
42
+ return @_data_servers
43
+ end
44
+
45
+ end
46
+ end
@@ -0,0 +1,18 @@
1
+ module ZAWS
2
+ class Newrelicapi
3
+ class Resources
4
+ class Servers
5
+ def initialize(shellout, newrelicapi)
6
+ @shellout=shellout
7
+ @newrelicapi=newrelicapi
8
+ end
9
+
10
+ def list
11
+ @_list ||= (ZAWS::Newrelicapi::Resources::Servers::List.new(@shellout, @newrelicapi))
12
+ return @_list
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,20 @@
1
+ module ZAWS
2
+ class Newrelicapi
3
+ class Resources
4
+ class Servers
5
+ class List
6
+
7
+ def initialize(shellout,newrelicapi)
8
+ @shellout=shellout
9
+ @newrelicapi=newrelicapi
10
+ end
11
+
12
+ def execute(verbose=nil)
13
+ @newrelicapi.client.get("/v2/servers.json")
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,35 @@
1
+ module ZAWS
2
+ class Sumoapi
3
+ class Data
4
+ class Collectors
5
+
6
+ def initialize(shellout, sumoapi)
7
+ @shellout=shellout
8
+ @sumoapi=sumoapi
9
+ @instance_hash=nil
10
+ end
11
+
12
+ def validJSON
13
+ return (@instance_hash.nil?)
14
+ end
15
+
16
+ def load(data, verbose)
17
+ @instance_raw_data = data
18
+ verbose.puts(@instance_raw_data) if verbose
19
+ @instance_hash=data
20
+ end
21
+
22
+ def view(verbose)
23
+ details = @sumoapi.filestore.retrieve("collectors")
24
+ if details.nil?
25
+ load(@sumoapi.resource_collectors.list.execute(verbose),verbose)
26
+ @sumoapi.filestore.store("collectors",@instance_hash,Time.now + @sumoapi.filestore.timeout)
27
+ else
28
+ load(details,verbose)
29
+ end
30
+ return @instance_raw_data
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end