avs 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5bb99919abb59c669c0bcdb832755f893aa4c882e1393914b70f14192af603cb
4
- data.tar.gz: 43d608e74bfde138cf7a879e905db2244fdacdba3abf9919822825411efa3bfb
3
+ metadata.gz: e3d8707cf431524fd229b1214e8b9fa6e04e79355679917afa9999d5f9b4b54b
4
+ data.tar.gz: b8ad24e89a29dc34ceedfb2eec8c16b6b49f38793dca9c5e33b3000e5f9eef03
5
5
  SHA512:
6
- metadata.gz: 3ffc5c54d18016ee458012ac4e41ecfae27dd0eac9f6961758ab84a37e2365832e5ba7e9760aab661bfa75daaf4101dcdb966d3b12b1aef73f0c84598801f5be
7
- data.tar.gz: 167d7e2663fb659649d986af8d269ea3d7023396e5f2e936c3a8ed68929ad468666bb41dde58cc82c8a3b230598147a6e219664354136c67265de0b7987ee383
6
+ metadata.gz: 1bfaca46b315a65f95364f29d977fa7f62e3ff7016b236f6a432a9f73cf098ed64d633800e4c7a1acbbb66043bd39a42052c2b53aa8070450493a7454f82a830
7
+ data.tar.gz: e965e76ae0b0da5416368d75b924f149c86449f52027825f37b5ed43e8923e9029f4c094a1531a6c5210c0a2bf3e3f7318872ade05bdbb2b369bf9c349ae4c2b
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ .env
2
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,31 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ avs (0.0.2)
5
+ gli (~> 2.21.1)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ bump (0.10.0)
11
+ gli (2.21.1)
12
+ minitest (5.22.3)
13
+ psych (5.1.2)
14
+ stringio
15
+ rake (13.1.0)
16
+ rdoc (6.6.2)
17
+ psych (>= 4.0.0)
18
+ stringio (3.1.0)
19
+
20
+ PLATFORMS
21
+ arm64-darwin-21
22
+
23
+ DEPENDENCIES
24
+ avs!
25
+ bump
26
+ minitest
27
+ rake
28
+ rdoc
29
+
30
+ BUNDLED WITH
31
+ 2.4.8
data/README.adoc ADDED
@@ -0,0 +1,162 @@
1
+ = avs
2
+ Christian Kyony <ckyony@changamuka.com>
3
+ v0.0.1, 2024-03.14
4
+
5
+ :uri-freesoftware: https://www.gnu.org/philosophy/free-sw.html
6
+
7
+
8
+
9
+
10
+ == For security engineers
11
+ who need to interact with a Rapid7 Nexpose console,
12
+ the *avs* gem is a command line utility
13
+ that manage (e.g. create, list, update, and remove) the following entities:
14
+ - sites,
15
+ - scans,
16
+ - assets,
17
+ - asset groups,
18
+ - reports,
19
+ - vulnerabilities
20
+ - etc...
21
+
22
+
23
+
24
+ == Personal scratch
25
+
26
+ I need to automate the creation of hundreds sites and reports.
27
+
28
+
29
+ == Installation
30
+
31
+ Simply run the command below
32
+
33
+ ----
34
+ $ gem install avs
35
+ ----
36
+
37
+
38
+ == Usage
39
+
40
+ You can get help on available commands.
41
+
42
+ ----
43
+ NAME
44
+ nsc - CLI to interface with Nexpose Security Console
45
+
46
+ SYNOPSIS
47
+ nsc [global options] command [command options] [arguments...]
48
+
49
+ VERSION
50
+ 0.0.2
51
+
52
+ GLOBAL OPTIONS
53
+ --help - Show this message
54
+ --version - Display the program version
55
+
56
+ COMMANDS
57
+ assets - Manage assets
58
+ bulk_delete - Bulk delete assets with unknown OS
59
+ connect, login - Verify connection to the server
60
+ groups - Manage asset groups
61
+ help - Shows a list of commands or help for one command
62
+ reports - Manage reports
63
+ sites - Manage sites
64
+ ----
65
+
66
+ // List all active scans
67
+ //
68
+ // nsc scan list
69
+ //
70
+ // Run an adhoc sql query and export via csv
71
+ //
72
+ // nsc reports --sql "select * from dim_asset"
73
+ //
74
+ // or for more complex sql queries, put the sql into a file and run
75
+ //
76
+ // nsc reports --sqlfile ./new_assets.sql
77
+ //
78
+ //
79
+ // List all reports defined
80
+ //
81
+ // nsc reports
82
+ //
83
+ // Request the console's version details
84
+ //
85
+ // nsc console commands "ver"
86
+ //
87
+ // Run an adhoc scan for a single ip or network cidr-noted range ( --id )
88
+ //
89
+ // nsc scans create --range 192.168.42.103/32
90
+ //
91
+ // how to add a new custom role for configuration within the console ui, based on a copy of existinsc role
92
+ //
93
+ // nsc roles -n security-manager --description "New Role Name" --newname new-short-name
94
+ //
95
+ // how to add a new user, with default password of "nxpassword" until moved to yaml config is supported
96
+ //
97
+ // nsc users create --name <username> --fullname "Full Name"
98
+ //
99
+ // how to export packaged scan data in a single zip file
100
+ //
101
+ // nsc scan --update --scanpath ./ --action export --id <scan id>
102
+ //
103
+
104
+ == Configuration
105
+
106
+ ----
107
+ # ~/lab.yaml consists of the following:
108
+
109
+ config:
110
+ server: 10.10.10.10
111
+ port: 3780
112
+ user: nxuser
113
+ password: password
114
+ ----
115
+
116
+
117
+ == Development
118
+
119
+ Checkout the github repository
120
+
121
+ git clone https://github.com/rhc/avs
122
+
123
+ Access the source code folder directory.
124
+
125
+ $ cd avs
126
+
127
+ Install dependencies
128
+
129
+ bin/setup
130
+
131
+ Run the tests
132
+
133
+ rake test
134
+
135
+ Experiment with the code under development
136
+
137
+ run bin/console
138
+
139
+ Install this gem onto your local machine
140
+
141
+ bundle exec rake install
142
+
143
+ Release a new version
144
+
145
+ gem bump
146
+ gem release
147
+
148
+ == Contributing
149
+
150
+ In the spirit of {uri-freesoftware}[free software],
151
+ everyone is encouraged to help improve this project.
152
+
153
+ If you discover errors or omissions in the source code, documentation, or website content,
154
+ please don’t hesitate to submit an issue or open a pull request with a fix. New contributors are always welcome!
155
+
156
+ == License
157
+
158
+ The gem is available as open source under the terms of the
159
+ http://opensource.org/licenses/MIT[MIT License].
160
+
161
+
162
+
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ require 'rake/clean'
2
+ require 'rubygems'
3
+ require 'rubygems/package_task'
4
+ require 'rdoc/task'
5
+ Rake::RDocTask.new do |rd|
6
+ rd.main = "README.rdoc"
7
+ rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
8
+ rd.title = 'Your application title'
9
+ end
10
+
11
+ spec = eval(File.read('avs.gemspec'))
12
+
13
+ Gem::PackageTask.new(spec) do |pkg|
14
+ end
15
+ require 'rake/testtask'
16
+ Rake::TestTask.new do |t|
17
+ t.libs << "test"
18
+ t.test_files = FileList['test/*_test.rb']
19
+ end
20
+
21
+ task :default => :test
data/avs.gemspec ADDED
@@ -0,0 +1,22 @@
1
+ # Ensure we require the local version and not one we might have installed already
2
+ require File.join([File.dirname(__FILE__),'lib','avs','version.rb'])
3
+ spec = Gem::Specification.new do |s|
4
+ s.name = 'avs'
5
+ s.version = Avs::VERSION
6
+ s.author = 'Christian Kyony'
7
+ s.email = 'ckyony@changamuka.com'
8
+ s.homepage = 'http://your.website.com'
9
+ s.platform = Gem::Platform::RUBY
10
+ s.summary = 'A description of your project'
11
+ s.files = `git ls-files`.split(" ")
12
+ s.require_paths << 'lib'
13
+ s.extra_rdoc_files = ['README.adoc','avs.rdoc']
14
+ s.rdoc_options << '--title' << 'avs' << '--main' << 'README.rdoc' << '-ri'
15
+ s.bindir = 'bin'
16
+ s.executables << 'avs'
17
+ s.add_development_dependency('bump')
18
+ s.add_development_dependency('rake')
19
+ s.add_development_dependency('rdoc')
20
+ s.add_development_dependency('minitest')
21
+ s.add_runtime_dependency('gli','~> 2.21.1')
22
+ end
@@ -0,0 +1,74 @@
1
+ require_relative 'model'
2
+
3
+ # Reopen the App class or module to add the 'asset' command
4
+ class App
5
+ extend GLI::App
6
+
7
+ desc 'Describe asset here'
8
+ arg_name 'Describe arguments to asset here'
9
+ command :asset do |c|
10
+ c.desc 'Describe a switch to asset'
11
+ c.switch :s
12
+
13
+ c.desc 'Describe a flag to asset'
14
+ c.default_value 'default'
15
+ c.flag :f
16
+ c.action do |_global_options, _options, _args|
17
+ # Your command logic specific to 'asset' here
18
+ assets = [
19
+ CmdbAsset.new(
20
+ id: 100,
21
+ country_code: 'cd',
22
+ business_unit: 'bu',
23
+ sub_area: 'sa',
24
+ application: 'ewallet',
25
+ utr: 'UTR01966',
26
+ fqdn: 'fqdn.co.za',
27
+ host_name: 'fqdn',
28
+ ip_address: '172.16.19.66',
29
+ operating_system: 'ubuntu',
30
+ server_environment: 'linux',
31
+ server_category: 'linux',
32
+ host_key: 'xxxx',
33
+ country: 'DRC'
34
+ ),
35
+ CmdbAsset.new(
36
+ id: 200,
37
+ country_code: 'mw',
38
+ business_unit: 'bu',
39
+ sub_area: 'sa',
40
+ application: 'atm',
41
+ utr: 'UTR01966',
42
+ fqdn: 'fqdn.co.za',
43
+ host_name: 'fqdn',
44
+ ip_address: '198.172.19.66',
45
+ operating_system: 'ubuntu',
46
+ server_environment: 'linux',
47
+ server_category: 'linux',
48
+ host_key: 'xxxx',
49
+ country: 'Malawi'
50
+ ),
51
+ CmdbAsset.new(
52
+ id: 300,
53
+ country_code: 'bw',
54
+ business_unit: 'bu',
55
+ sub_area: 'sa',
56
+ application: 'forex',
57
+ utr: 'UTR01986',
58
+ fqdn: 'fqdn.co.za',
59
+ host_name: 'fqdn',
60
+ ip_address: '10.12.19.66',
61
+ operating_system: 'ubuntu',
62
+ server_environment: 'linux',
63
+ server_category: 'linux',
64
+ host_key: 'xxxx',
65
+ country: 'Botswana'
66
+ )
67
+ ]
68
+ puts 'list assets'
69
+ assets.each do |asset|
70
+ puts asset
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,71 @@
1
+ class CmdbAsset
2
+ attr_accessor :id,
3
+ :country_code,
4
+ :business_unit,
5
+ :sub_area,
6
+ :application,
7
+ :utr,
8
+ :fqdn,
9
+ :host_name,
10
+ :ip_address,
11
+ :operating_system,
12
+ :server_environment,
13
+ :server_category,
14
+ :host_key,
15
+ :country
16
+
17
+ def initialize(id:,
18
+ country_code:,
19
+ business_unit:,
20
+ sub_area:,
21
+ application:,
22
+ utr:,
23
+ fqdn:,
24
+ host_name:,
25
+ ip_address:,
26
+ operating_system:,
27
+ server_environment:,
28
+ server_category:,
29
+ host_key:,
30
+ country:)
31
+ @id = id
32
+ @country_code = country_code
33
+ @business_unit = business_unit
34
+ @sub_area = sub_area
35
+ @application = application
36
+ @utr = utr
37
+ @fqdn = fqdn
38
+ @host_name = host_name
39
+ @ip_address = ip_address
40
+ @operating_system = operating_system
41
+ @server_category = server_category
42
+ @server_environment = server_environment
43
+ @host_key = host_key
44
+ @country = country
45
+ end
46
+
47
+ def site_name
48
+ ['', country_code, business_unit, sub_area, application, utr].join(':')
49
+ end
50
+
51
+ def self.from_csv(row)
52
+ CmdbAsset.new(id: row[:id],
53
+ country_code: row[:country_code],
54
+ country: row[:country],
55
+ business_unit: row[:business_unit],
56
+ sub_area: row[:sub_area],
57
+ application: row[:application],
58
+ utr: row[:utr],
59
+ fqdn: row[:fqdn],
60
+ ip_address: row[:ip_address],
61
+ host_name: row[:host_name],
62
+ host_key: row[:host_key],
63
+ operating_system: row[:operating_system],
64
+ server_environment: row[:server_environment],
65
+ server_category: row[:server_category])
66
+ end
67
+
68
+ def to_s
69
+ [id, site_name, fqdn, ip_address].join ','
70
+ end
71
+ end
@@ -0,0 +1,3 @@
1
+ module Avs
2
+ VERSION = '0.0.2'
3
+ end
data/lib/avs.rb ADDED
@@ -0,0 +1,5 @@
1
+ require 'avs/version'
2
+
3
+ # Add requires for other files you add to your project here, so
4
+ # you just need to require this one file in your bin file
5
+ require_relative 'asset/command'
@@ -0,0 +1,14 @@
1
+ require_relative "test_helper"
2
+
3
+ class DefaultTest < Minitest::Test
4
+
5
+ def setup
6
+ end
7
+
8
+ def teardown
9
+ end
10
+
11
+ def test_the_truth
12
+ assert true
13
+ end
14
+ end
@@ -0,0 +1,4 @@
1
+ require "minitest/autorun"
2
+
3
+ # Add test libraries you want to use here, e.g. mocha
4
+ # Add helper classes or methods here, too
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Kyony
@@ -10,6 +10,20 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2024-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bump
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rake
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -72,12 +86,23 @@ executables:
72
86
  - avs
73
87
  extensions: []
74
88
  extra_rdoc_files:
75
- - README.rdoc
89
+ - README.adoc
76
90
  - avs.rdoc
77
91
  files:
78
- - README.rdoc
92
+ - ".gitignore"
93
+ - Gemfile
94
+ - Gemfile.lock
95
+ - README.adoc
96
+ - Rakefile
97
+ - avs.gemspec
79
98
  - avs.rdoc
80
99
  - bin/avs
100
+ - lib/asset/command.rb
101
+ - lib/asset/model.rb
102
+ - lib/avs.rb
103
+ - lib/avs/version.rb
104
+ - test/default_test.rb
105
+ - test/test_helper.rb
81
106
  homepage: http://your.website.com
82
107
  licenses: []
83
108
  metadata: {}
data/README.rdoc DELETED
@@ -1,6 +0,0 @@
1
- = avs
2
-
3
- Describe your project here
4
-
5
- :include:avs.rdoc
6
-