diff --git a/lib/zaws.rb b/lib/zaws.rb index 2f20d8d..faabda2 100755 --- a/lib/zaws.rb +++ b/lib/zaws.rb @@ -1,33 +1,4 @@ -# require "zaws/version" -# require "zaws/helper/option" -# require "zaws/helper/output" -# require "zaws/helper/shell" -# require "zaws/helper/zfile" -# require "zaws/command/subnet" -# require "zaws/command/security_group" -# require "zaws/command/route_table" -# require "zaws/command/compute" -# require "zaws/command/elasticip" -# require "zaws/command/load_balancer" -# require "zaws/command/hosted_zone" -# require "zaws/command/cloud_trail" -# require "zaws/command/bucket" -# require "zaws/aws" -# require "zaws/cloud_trail" -# require "zaws/ec2" -# require "zaws/elb" -# require "zaws/route53" -# require "zaws/s3" -# require "zaws/ec2/subnet" -# require "zaws/ec2/security_group" -# require "zaws/ec2/route_table" -# require "zaws/ec2/compute" -# require "zaws/ec2/elasticip" -# require "zaws/elb/load_balancer" -# require "zaws/route53/hosted_zone" -# require "zaws/s3/bucket" require "thor" -#require "zaws/awscli" Dir["#{File.dirname(__FILE__)}/zaws/**/*.rb"].each { |item| load(item) } module ZAWS @@ -78,6 +49,9 @@ class ZAWSCLI < Thor desc "newrelic", "newrelic" subcommand "newrelic", ZAWS::Command::Newrelic + desc "config", "config" + subcommand "config", ZAWS::Command::Config + desc "version", "Get the version of the Zynx AWS Automation Tool." def version diff --git a/lib/zaws/awscli.rb b/lib/zaws/awscli/awscli.rb similarity index 76% rename from lib/zaws/awscli.rb rename to lib/zaws/awscli/awscli.rb index 323c865..ac696ac 100755 --- a/lib/zaws/awscli.rb +++ b/lib/zaws/awscli/awscli.rb @@ -1,3 +1,4 @@ +require 'fileutils' module ZAWS class AWSCLI @@ -11,10 +12,22 @@ def filestore @filestore ||= ZAWS::Repository::Filestore.new() @home ||= ENV['HOME'] @filestore.location="#{@home}/.awsdata" + unless File.directory?(@filestore.location) + FileUtils.mkdir_p(@filestore.location) + end @filestore.timeout = 600 return @filestore end + def remove_creds + if File.directory?("#{@home}/.awsdata") + FileUtils.rmtree("#{@home}/.awsdata") + end + if File.exist?("#{@home}/.aws/credentials") + File.delete("#{@home}/.aws/credentials") + end + end + def version if ! @version info = @shellout.cli("aws --version",nil) diff --git a/lib/zaws/command/ai.rb b/lib/zaws/command/ai.rb index f6bca25..991c025 100755 --- a/lib/zaws/command/ai.rb +++ b/lib/zaws/command/ai.rb @@ -25,7 +25,7 @@ def initialize(*args) option :home, :type => :string, :default => ENV['HOME'], :desc => 'Home directory location for credentials file' def query(value) @ai.awscli.home=options[:home] - @ai.query.all(@out, (options[:verbose] ? @out : nil),value) + @ai.query.all(options[:home],@out, (options[:verbose] ? @out : nil),value) end desc "query_aws", "query_aws" diff --git a/lib/zaws/command/config.rb b/lib/zaws/command/config.rb new file mode 100644 index 0000000..3f3fae2 --- /dev/null +++ b/lib/zaws/command/config.rb @@ -0,0 +1,42 @@ +require 'thor' + +module ZAWS + module Command + class Config < Thor + class_option :verbose, :type => :boolean, :desc => "Verbose outout", :aliases => :d, :default => false + + attr_accessor :config + attr_accessor :out + attr_accessor :print_exit_code + + def initialize(*args) + super + shellout=ZAWS::Helper::Shell.new + nessusapi = ZAWS::Nessusapi.new(shellout) + sumoapi = ZAWS::Sumoapi.new(shellout) + newrelicapi = ZAWS::Newrelicapi.new(shellout) + awscli = ZAWS::AWSCLI.new(shellout) + @config = ZAWS::Controllers::Config.new(shellout, nessusapi,sumoapi,newrelicapi,awscli) + @out = $stdout + @print_exit_code = false + end + + desc "remove_creds", "remove_creds" + option :home, :type => :string, :default => ENV['HOME'], :desc => 'Home directory location for credentials file' + def remove_creds + @config.awscli.home=options[:home] + @config.awscli.remove_creds() + + @config.nessusapi.home=options[:home] + @config.nessusapi.remove_creds() + + @config.sumoapi.home=options[:home] + @config.sumoapi.remove_creds() + + @config.newrelicapi.home=options[:home] + @config.newrelicapi.remove_creds() + end + + end + end +end diff --git a/lib/zaws/aws.rb b/lib/zaws/controllers/aws.rb similarity index 100% rename from lib/zaws/aws.rb rename to lib/zaws/controllers/aws.rb diff --git a/lib/zaws/controllers/config.rb b/lib/zaws/controllers/config.rb new file mode 100644 index 0000000..d2de41f --- /dev/null +++ b/lib/zaws/controllers/config.rb @@ -0,0 +1,31 @@ +module ZAWS + module Controllers + class Config + + def initialize(shellout, nessusapi,sumoapi,newrelicapi,awscli) + @shellout=shellout + @_nessusapi= nessusapi ? nessusapi : ZAWS::Nessusapi.new(@shellout) + @_sumoapi= sumoapi ? sumoapi : ZAWS::Sumoapi.new(@shellout) + @_newrelicapi= newrelicapi ? newrelicapi : ZAWS::Newrelicapi.new(@shellout) + @_awscli= awscli ? awscli : ZAWS::AWSCLI.new(@shellout) + end + + def nessusapi + return @_nessusapi + end + + def sumoapi + return @_sumoapi + end + + def newrelicapi + return @_newrelicapi + end + + def awscli + return @_awscli + end + + end + end +end diff --git a/lib/zaws/nessusapi/nessusapi.rb b/lib/zaws/nessusapi/nessusapi.rb index 8fe9776..24f2b20 100755 --- a/lib/zaws/nessusapi/nessusapi.rb +++ b/lib/zaws/nessusapi/nessusapi.rb @@ -10,10 +10,22 @@ def initialize(shellout) def filestore @filestore ||= ZAWS::Repository::Filestore.new() @filestore.location="#{@home}/.nessusapi" + unless File.directory?(@filestore.location) + FileUtils.mkdir_p(@filestore.location) + end @filestore.timeout = 600 return @filestore end + def remove_creds + if File.directory?("#{@home}/.nessusapi") + FileUtils.rmtree("#{@home}/.nessusapi") + end + if File.exist?("#{@home}/.nessus.yml") + File.delete("#{@home}/.nessus.yml") + end + end + def resource_scanners @_resource_scanners ||= (ZAWS::Nessusapi::Resources::Scanners.new(@shellout, self)) return @_resource_scanners diff --git a/lib/zaws/newrelicapi/newrelicapi.rb b/lib/zaws/newrelicapi/newrelicapi.rb index a5dfce6..ccc8a9e 100755 --- a/lib/zaws/newrelicapi/newrelicapi.rb +++ b/lib/zaws/newrelicapi/newrelicapi.rb @@ -10,10 +10,22 @@ def initialize(shellout) def filestore @filestore ||= ZAWS::Repository::Filestore.new() @filestore.location="#{@home}/.newrelicapi" + unless File.directory?(@filestore.location) + FileUtils.mkdir_p(@filestore.location) + end @filestore.timeout = 600 return @filestore end + def remove_creds + if File.directory?("#{@home}/.newrelicapi") + FileUtils.rmtree("#{@home}/.newrelicapi") + end + if File.exist?("#{@home}/.newrelic.yml") + File.delete("#{@home}/.newrelic.yml") + end + end + def resource_servers @_resource_servers ||= (ZAWS::Newrelicapi::Resources::Servers.new(@shellout, self)) return @_resource_servers @@ -22,7 +34,7 @@ def resource_servers def client fail("Home is null! Make sure its set before getting the client.") if @home== nil creds = ZAWS::Newrelicapi::NewrelicCreds::Creds::YamlFile.new(@home) - @_client ||= (ZAWS::Newrelicapi::NewrelicClient.new(creds)) + @_client ||= (ZAWS::Newrelicapi::NewrelicClient.new(creds)) end def data_servers diff --git a/lib/zaws/cloud_trail.rb b/lib/zaws/services/cloud_trail.rb similarity index 100% rename from lib/zaws/cloud_trail.rb rename to lib/zaws/services/cloud_trail.rb diff --git a/lib/zaws/ec2.rb b/lib/zaws/services/ec2.rb similarity index 100% rename from lib/zaws/ec2.rb rename to lib/zaws/services/ec2.rb diff --git a/lib/zaws/elb.rb b/lib/zaws/services/elb.rb similarity index 100% rename from lib/zaws/elb.rb rename to lib/zaws/services/elb.rb diff --git a/lib/zaws/iam.rb b/lib/zaws/services/iam.rb similarity index 100% rename from lib/zaws/iam.rb rename to lib/zaws/services/iam.rb diff --git a/lib/zaws/route53.rb b/lib/zaws/services/route53.rb similarity index 100% rename from lib/zaws/route53.rb rename to lib/zaws/services/route53.rb diff --git a/lib/zaws/s3.rb b/lib/zaws/services/s3.rb similarity index 100% rename from lib/zaws/s3.rb rename to lib/zaws/services/s3.rb diff --git a/lib/zaws/sumoapi/sumoapi.rb b/lib/zaws/sumoapi/sumoapi.rb index 627302b..8e7efb3 100755 --- a/lib/zaws/sumoapi/sumoapi.rb +++ b/lib/zaws/sumoapi/sumoapi.rb @@ -10,10 +10,22 @@ def initialize(shellout) def filestore @filestore ||= ZAWS::Repository::Filestore.new() @filestore.location="#{@home}/.sumoapi" + unless File.directory?(@filestore.location) + FileUtils.mkdir_p(@filestore.location) + end @filestore.timeout = 600 return @filestore end + def remove_creds + if File.directory?("#{@home}/.sumoapi") + FileUtils.rmtree("#{@home}/.sumoapi") + end + if File.exist?("#{@home}/.sumo.yml") + File.delete("#{@home}/.sumo.yml") + end + end + def resource_collectors @_resource_collectors ||= (ZAWS::Sumoapi::Resources::Collectors.new(@shellout, self)) return @_resource_collectors