ronin-db 0.1.0.beta1-java

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 (74) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.github/workflows/ruby.yml +31 -0
  4. data/.gitignore +13 -0
  5. data/.rspec +1 -0
  6. data/.ruby-version +1 -0
  7. data/.yardopts +1 -0
  8. data/COPYING.txt +165 -0
  9. data/ChangeLog.md +12 -0
  10. data/Gemfile +39 -0
  11. data/README.md +272 -0
  12. data/Rakefile +76 -0
  13. data/bin/ronin-db +35 -0
  14. data/gemspec.yml +46 -0
  15. data/lib/ronin/db/cli/command.rb +37 -0
  16. data/lib/ronin/db/cli/commands/add.rb +206 -0
  17. data/lib/ronin/db/cli/commands/asn.rb +218 -0
  18. data/lib/ronin/db/cli/commands/creds.rb +80 -0
  19. data/lib/ronin/db/cli/commands/edit.rb +58 -0
  20. data/lib/ronin/db/cli/commands/emails.rb +90 -0
  21. data/lib/ronin/db/cli/commands/hosts.rb +100 -0
  22. data/lib/ronin/db/cli/commands/ips.rb +100 -0
  23. data/lib/ronin/db/cli/commands/irb.rb +81 -0
  24. data/lib/ronin/db/cli/commands/list.rb +124 -0
  25. data/lib/ronin/db/cli/commands/migrate.rb +75 -0
  26. data/lib/ronin/db/cli/commands/remove.rb +69 -0
  27. data/lib/ronin/db/cli/commands/urls.rb +170 -0
  28. data/lib/ronin/db/cli/database_command.rb +71 -0
  29. data/lib/ronin/db/cli/model_command.rb +202 -0
  30. data/lib/ronin/db/cli/modifiable.rb +141 -0
  31. data/lib/ronin/db/cli/resources_command.rb +120 -0
  32. data/lib/ronin/db/cli/ruby_shell.rb +51 -0
  33. data/lib/ronin/db/cli/uri_methods.rb +97 -0
  34. data/lib/ronin/db/cli.rb +38 -0
  35. data/lib/ronin/db/config_file.rb +132 -0
  36. data/lib/ronin/db/exceptions.rb +26 -0
  37. data/lib/ronin/db/home.rb +36 -0
  38. data/lib/ronin/db/root.rb +28 -0
  39. data/lib/ronin/db/version.rb +26 -0
  40. data/lib/ronin/db.rb +123 -0
  41. data/man/ronin-db-add.1 +99 -0
  42. data/man/ronin-db-add.1.md +75 -0
  43. data/man/ronin-db-asn.1 +79 -0
  44. data/man/ronin-db-asn.1.md +59 -0
  45. data/man/ronin-db-creds.1 +78 -0
  46. data/man/ronin-db-creds.1.md +58 -0
  47. data/man/ronin-db-edit.1 +48 -0
  48. data/man/ronin-db-edit.1.md +36 -0
  49. data/man/ronin-db-emails.1 +82 -0
  50. data/man/ronin-db-emails.1.md +61 -0
  51. data/man/ronin-db-hosts.1 +86 -0
  52. data/man/ronin-db-hosts.1.md +64 -0
  53. data/man/ronin-db-ips.1 +90 -0
  54. data/man/ronin-db-ips.1.md +67 -0
  55. data/man/ronin-db-irb.1 +61 -0
  56. data/man/ronin-db-irb.1.md +46 -0
  57. data/man/ronin-db-list.1 +58 -0
  58. data/man/ronin-db-list.1.md +44 -0
  59. data/man/ronin-db-migrate.1 +44 -0
  60. data/man/ronin-db-migrate.1.md +32 -0
  61. data/man/ronin-db-remove.1 +55 -0
  62. data/man/ronin-db-remove.1.md +42 -0
  63. data/man/ronin-db-urls.1 +98 -0
  64. data/man/ronin-db-urls.1.md +73 -0
  65. data/ronin-db.gemspec +78 -0
  66. data/spec/cli/commands/add_spec.rb +220 -0
  67. data/spec/cli/commands/edit_spec.rb +12 -0
  68. data/spec/cli/commands/irb_spec.rb +26 -0
  69. data/spec/cli/database_command_spec.rb +53 -0
  70. data/spec/cli/model_command_spec.rb +237 -0
  71. data/spec/cli/ruby_shell_spec.rb +14 -0
  72. data/spec/cli/uri_methods_spec.rb +190 -0
  73. data/spec/spec_helper.rb +15 -0
  74. metadata +200 -0
data/gemspec.yml ADDED
@@ -0,0 +1,46 @@
1
+ name: ronin-db
2
+ summary: A common database library for managing and querying security data
3
+ description: |
4
+ ronin-db is a database library for managing and querying security data.
5
+ ronin-db provides common ORM models for interacting with the database's SQL
6
+ tables and querying/storing security data, such as URLs, email addresses,
7
+ host names, IPs, ports, etc. ronin-db also provides CLI commands for managing
8
+ the database(s).
9
+
10
+ license: LGPL-3.0
11
+ authors: Postmodern
12
+ email: postmodern.mod3@gmail.com
13
+ homepage: https://ronin-rb.dev
14
+ has_yard: true
15
+
16
+ generated_files:
17
+ - man/ronin-db-add.1
18
+ - man/ronin-db-asn.1
19
+ - man/ronin-db-creds.1
20
+ - man/ronin-db-emails.1
21
+ - man/ronin-db-hosts.1
22
+ - man/ronin-db-ips.1
23
+ - man/ronin-db-irb.1
24
+ - man/ronin-db-edit.1
25
+ - man/ronin-db-irb.1
26
+ - man/ronin-db-list.1
27
+ - man/ronin-db-migrate.1
28
+ - man/ronin-db-remove.1
29
+ - man/ronin-db-urls.1
30
+
31
+ required_ruby_version: ">= 3.0.0"
32
+
33
+ ruby_dependencies:
34
+ sqlite: ~> 1.0
35
+
36
+ jruby_dependencies:
37
+ activerecord-jdbcsqlite3-adapter: ~> 70.0.pre
38
+
39
+ dependencies:
40
+ # Ronin dependencies:
41
+ ronin-db-activerecord: ~> 0.1.0.beta1
42
+ ronin-support: ~> 1.0.0.beta1
43
+ ronin-core: ~> 0.1.0.beta1
44
+
45
+ development_dependencies:
46
+ bundler: ~> 2.0
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # ronin-db - A common database library for managing and querying security data.
4
+ #
5
+ # Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ #
7
+ # ronin-db is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Lesser General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # ronin-db is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License
18
+ # along with ronin-db. If not, see <https://www.gnu.org/licenses/>.
19
+ #
20
+
21
+ require 'ronin/db/root'
22
+
23
+ require 'ronin/core/cli/command'
24
+
25
+ module Ronin
26
+ module DB
27
+ class CLI
28
+ class Command < Core::CLI::Command
29
+
30
+ man_dir File.join(ROOT,'man')
31
+
32
+ bug_report_url 'https://github.com/ronin-rb/ronin-db/issues/new'
33
+
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,206 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # ronin-db - A common database library for managing and querying security data.
4
+ #
5
+ # Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ #
7
+ # ronin-db is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Lesser General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # ronin-db is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License
18
+ # along with ronin-db. If not, see <https://www.gnu.org/licenses/>.
19
+ #
20
+
21
+ require 'ronin/db/cli/command'
22
+ require 'ronin/db/cli/uri_methods'
23
+ require 'ronin/db/config_file'
24
+
25
+ require 'command_kit/options/verbose'
26
+ require 'command_kit/printing'
27
+ require 'command_kit/printing/indent'
28
+
29
+ module Ronin
30
+ module DB
31
+ class CLI
32
+ module Commands
33
+ #
34
+ # Adds an existing database to the `~/.config/ronin-db/database.yml`
35
+ # configuration file.
36
+ #
37
+ # ## Usage
38
+ #
39
+ # ronin-db add [options] NAME [URI]
40
+ #
41
+ # ## Options
42
+ #
43
+ # -A sqlite3|mysql2|postgresql|...,
44
+ # --adapter The database adapter
45
+ # --sqlite3 FILE Alias for --adapter sqlite3 --database FILE
46
+ # --mysql2 Alias for --adapter mysql2
47
+ # --postgresql Alias for --adapter postgresql
48
+ # -H, --host HOST The host of the database to add
49
+ # -p, --port PORT The port of the database to add
50
+ # -u, --username USER The user to authenticate with for the database
51
+ # -P, --password PASSWORD The password to authenticate with for the database
52
+ # --read-password Reads the database password from stdin
53
+ # -D, --database NAME|PATH The database name or path (for sqlite3)
54
+ # -h, --help Print help information
55
+ #
56
+ # ## Arguments
57
+ #
58
+ # NAME The name of the database to add.
59
+ # [URI] The optional URI to the database.
60
+ #
61
+ class Add < Command
62
+
63
+ include URIMethods
64
+
65
+ usage '[options] NAME [URI]'
66
+
67
+ option :adapter, short: '-A',
68
+ value: {
69
+ type: String,
70
+ usage: 'sqlite3|mysql2|postgresql|...'
71
+ },
72
+ desc: 'The database adapter' do |adapter|
73
+ @config[:adapter] = normalize_adapter(adapter)
74
+ end
75
+
76
+ option :sqlite3, value: {
77
+ type: String,
78
+ usage: 'FILE'
79
+ },
80
+ desc: 'Alias for --adapter sqlite3 --database FILE' do |file|
81
+ @config[:adapter] = 'sqlite3'
82
+ @config[:database] = normalize_sqlite3_path(file)
83
+ end
84
+
85
+ option :mysql2, desc: 'Alias for --adapter mysql2' do
86
+ @config[:adapter] = 'mysql2'
87
+ end
88
+
89
+ option :postgresql, desc: 'Alias for --adapter postgresql' do
90
+ @config[:adapter] = 'postgresql'
91
+ end
92
+
93
+ option :host, short: '-H',
94
+ value: {
95
+ type: String,
96
+ usage: 'HOST'
97
+ },
98
+ desc: 'The host of the database to add' do |host|
99
+ @config[:host] = host
100
+ end
101
+
102
+ option :port, short: '-p',
103
+ value: {
104
+ type: Integer,
105
+ usage: 'PORT'
106
+ },
107
+ desc: 'The port of the database to add' do |port|
108
+ @config[:port] = port
109
+ end
110
+
111
+ option :username, short: '-u',
112
+ value: {
113
+ type: String,
114
+ usage: 'USER'
115
+ },
116
+ desc: 'The user to authenticate with for the database' do |user|
117
+ @config[:username] = user
118
+ end
119
+
120
+ option :password, short: '-P',
121
+ value: {
122
+ type: String,
123
+ usage: 'PASSWORD'
124
+ },
125
+ desc: 'The password to authenticate with for the database' do |password|
126
+ @config[:password] = password
127
+ end
128
+
129
+ option :read_password, desc: 'Reads the database password from stdin'
130
+
131
+ option :database, short: '-D',
132
+ value: {
133
+ type: String,
134
+ usage: 'NAME|PATH'
135
+ },
136
+ desc: 'The database name or path (for sqlite3)' do |database|
137
+ @config[:database] = database
138
+ end
139
+
140
+ argument :name, desc: 'The name of the database to add'
141
+
142
+ argument :uri, required: false,
143
+ desc: 'The optional URI to the database'
144
+
145
+ description 'Adds a pre-existing database to ronin-db'
146
+
147
+ man_page 'ronin-db-add.1'
148
+
149
+ # The database configuration Hash to add.
150
+ #
151
+ # @return [Hash{Symbol => Object}]
152
+ attr_reader :config
153
+
154
+ #
155
+ # Initializes the command.
156
+ #
157
+ # @param [Hash{Symbol => Object}] kwargs
158
+ # Additional keyword arguments.
159
+ #
160
+ def initialize(**kwargs)
161
+ super(**kwargs)
162
+
163
+ @config = {}
164
+ end
165
+
166
+ #
167
+ # Runs the `ronin-db add` command.
168
+ #
169
+ def run(name,uri=nil)
170
+ @config = parse_uri(uri) if uri
171
+
172
+ read_password if options[:read_password]
173
+ validate_config!
174
+
175
+ ConfigFile.edit do |yaml|
176
+ yaml[name] = @config
177
+ end
178
+ end
179
+
180
+ #
181
+ # Reads the password from stdin and sets `config[:password]`.
182
+ #
183
+ def read_password
184
+ @config[:password] = ask_secret('Password')
185
+ end
186
+
187
+ #
188
+ # Validates the {#config} Hash.
189
+ #
190
+ def validate_config!
191
+ unless @config[:adapter]
192
+ print_error "must specify a URI or the --adapter option"
193
+ exit(1)
194
+ end
195
+
196
+ unless @config[:database]
197
+ print_error "must specify a URI or the --database option"
198
+ exit(1)
199
+ end
200
+ end
201
+
202
+ end
203
+ end
204
+ end
205
+ end
206
+ end
@@ -0,0 +1,218 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # ronin-db - A common database library for managing and querying security data.
4
+ #
5
+ # Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ #
7
+ # ronin-db is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Lesser General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # ronin-db is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License
18
+ # along with ronin-db. If not, see <https://www.gnu.org/licenses/>.
19
+ #
20
+
21
+ require 'ronin/db/cli/model_command'
22
+ require 'ronin/core/cli/logging'
23
+
24
+ require 'ronin/support/network/asn'
25
+ require 'ronin/support/network/asn/list'
26
+
27
+ module Ronin
28
+ module DB
29
+ class CLI
30
+ module Commands
31
+ #
32
+ # Queries and updates ASNs.
33
+ #
34
+ # ## Usage
35
+ #
36
+ # ronin-db asn [options]
37
+ #
38
+ # ## Options
39
+ #
40
+ # --db NAME The database to connect to (Default: default)
41
+ # --db-uri URI The database URI to connect to
42
+ # -v, --verbose Enables verbose output
43
+ # -n, --number INT Searches for all ASN records with the AS number
44
+ # -C XX|None|Uknown, Searches for all ASN records with the country code
45
+ # --country-code
46
+ # -N, --name NAME Searches for all ASN records with the matching name
47
+ # -I, --ip IP Queries the ASN record for the IP
48
+ # -4, --ipv4 Filter ASN records for only IPv4 ranges
49
+ # -6, --ipv6 Filter ASN records for only IPv6 ranges
50
+ # -u, --update Updates the ASN records
51
+ # -U, --url URI Overrides the default ASN list URL (Default: https://iptoasn.com/data/ip2asn-combined.tsv.gz)
52
+ # -f, --file FILE Overrides the default ASN list file (Default: /home/postmodern/.local/share/ronin/ronin-support/ip2asn-combined.tsv.gz)
53
+ # -h, --help Print help information
54
+ #
55
+ class Asn < ModelCommand
56
+
57
+ include Core::CLI::Logging
58
+
59
+ model_file 'ronin/db/asn'
60
+ model_name 'ASN'
61
+
62
+ option :number, short: '-n',
63
+ value: {
64
+ type: Integer,
65
+ },
66
+ desc: 'Searches for all ASN records with the AS number' do |number|
67
+ @query_method_calls << [:with_number, [number]]
68
+ end
69
+
70
+ option :country_code, short: '-C',
71
+ value: {
72
+ type: /[A-Z]{2}|None|Unknown/,
73
+ usage: 'XX|None|Uknown'
74
+ },
75
+ desc: 'Searches for all ASN records with the country code' do |cc|
76
+ @query_method_calls << [:with_country_code, [cc]]
77
+ end
78
+
79
+ option :name, short: '-N',
80
+ value: {
81
+ type: String,
82
+ usage: 'NAME'
83
+ },
84
+ desc: 'Searches for all ASN records with the matching name' do |name|
85
+ @query_method_calls << [:with_name, [name]]
86
+ end
87
+
88
+ option :ip, short: '-I',
89
+ value: {
90
+ type: String,
91
+ usage: 'IP'
92
+ },
93
+ desc: 'Queries the ASN record for the IP' do |ip|
94
+ @query_method_calls << [:containing_ip, [ip]]
95
+ end
96
+
97
+ option :ipv4, short: '-4',
98
+ desc: 'Filter ASN records for only IPv4 ranges' do
99
+ @query_method_calls << [:v4]
100
+ end
101
+
102
+ option :ipv6, short: '-6',
103
+ desc: 'Filter ASN records for only IPv6 ranges' do
104
+ @query_method_calls << [:v6]
105
+ end
106
+
107
+ option :update, short: '-u',
108
+ desc: 'Updates the ASN records'
109
+
110
+ option :url, short: '-U',
111
+ value: {
112
+ type: String,
113
+ usage: 'URI',
114
+ default: Support::Network::ASN::List::URL
115
+ },
116
+ desc: 'Overrides the default ASN list URL'
117
+
118
+ option :file, short: '-f',
119
+ value: {
120
+ type: String,
121
+ usage: 'FILE',
122
+ default: Support::Network::ASN::List::PATH
123
+ },
124
+ desc: 'Overrides the default ASN list file'
125
+
126
+ description 'Queries and updates ASNs'
127
+
128
+ man_page 'ronin-db-asn.1'
129
+
130
+ #
131
+ # Runs the `ronin-db asn` command.
132
+ #
133
+ def run
134
+ connect
135
+
136
+ if options[:update]
137
+ update
138
+ else
139
+ list
140
+ end
141
+ end
142
+
143
+ #
144
+ # Updates the ASN file and populates the database.
145
+ #
146
+ def update
147
+ if is_list_file_stale?
148
+ log_info "Updating ASN list file ..."
149
+ update_list_file
150
+ end
151
+
152
+ # clear the table instead of trying to diff the list with the table
153
+ model.delete_all
154
+
155
+ model.transaction do
156
+ parse_list_file do |record|
157
+ log_info "Importing #{record} ..."
158
+ import_asn_record(record)
159
+ end
160
+ end
161
+ end
162
+
163
+ #
164
+ # Determines if the ASN list file is stale.
165
+ #
166
+ def is_list_file_stale?
167
+ Support::Network::ASN::List.stale?(options[:file])
168
+ end
169
+
170
+ #
171
+ # Updates the ASN list file.
172
+ #
173
+ def update_list_file
174
+ Support::Network::ASN::List.update(
175
+ path: options[:file],
176
+ url: options[:url]
177
+ )
178
+ end
179
+
180
+ #
181
+ # Parses the ASN list file.
182
+ #
183
+ # @yield [record]
184
+ #
185
+ # @yieldparam [Ronin::Support::Network::ASN::Record] record
186
+ #
187
+ # @return [Enumerator]
188
+ #
189
+ def parse_list_file(&block)
190
+ Support::Network::ASN::List.parse(options[:file],&block)
191
+ end
192
+
193
+ #
194
+ # Saves a parsed ASN record.
195
+ #
196
+ # @param [Ronin::Support::Network::ASN::Record] record
197
+ #
198
+ def import_asn_record(record)
199
+ asn = model.new(
200
+ version: if record.ipv6? then 6
201
+ else 4
202
+ end,
203
+ range_start: record.range.begin,
204
+ range_end: record.range.end,
205
+ number: record.number,
206
+ country_code: record.country_code,
207
+ name: record.name
208
+ )
209
+
210
+ # bypass validations since we're importing from a known good source
211
+ asn.save(validate: false)
212
+ end
213
+
214
+ end
215
+ end
216
+ end
217
+ end
218
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # ronin-db - A common database library for managing and querying security data.
4
+ #
5
+ # Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ #
7
+ # ronin-db is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Lesser General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # ronin-db is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License
18
+ # along with ronin-db. If not, see <https://www.gnu.org/licenses/>.
19
+ #
20
+
21
+ require 'ronin/db/cli/model_command'
22
+ require 'ronin/db/cli/modifiable'
23
+
24
+ module Ronin
25
+ module DB
26
+ class CLI
27
+ module Commands
28
+ #
29
+ # Queries all credentials in the database.
30
+ #
31
+ # ## Usage
32
+ #
33
+ # ronin creds [options]
34
+ #
35
+ # ## Options
36
+ #
37
+ # --db NAME The database to connect to (Default: default)
38
+ # --db-uri URI The database URI to connect to
39
+ # -v, --verbose Enables verbose output
40
+ # --add VALUE Adds a value to the database
41
+ # --import FILE Imports the values from the FILE into the database
42
+ # --delete VALUE Deletes a value from the database
43
+ # --delete-all Deletes all values from the database
44
+ # -u, --user [USER] Username to search for.
45
+ # -p, --password [PASS] Password to search for.
46
+ #
47
+ class Creds < ModelCommand
48
+
49
+ include Modifiable
50
+
51
+ model_file 'ronin/db/credential'
52
+ model_name 'Credential'
53
+
54
+ option :user, short: '-u',
55
+ value: {
56
+ type: String,
57
+ usage: 'USER'
58
+ },
59
+ desc: 'Username to search for' do |user|
60
+ @query_method_calls << [:for_user, [user]]
61
+ end
62
+
63
+ option :password, short: '-P',
64
+ value: {
65
+ type: String,
66
+ usage: 'PASSWORD'
67
+ },
68
+ desc: 'Password to search for' do |password|
69
+ @query_method_calls << [:with_password, [password]]
70
+ end
71
+
72
+ description 'Queries all credentials in the database'
73
+
74
+ man_page 'ronin-db-creds.1'
75
+
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # ronin-db - A common database library for managing and querying security data.
4
+ #
5
+ # Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ #
7
+ # ronin-db is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Lesser General Public License as published
9
+ # by the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # ronin-db is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License
18
+ # along with ronin-db. If not, see <https://www.gnu.org/licenses/>.
19
+ #
20
+
21
+ require 'ronin/db/cli/command'
22
+ require 'ronin/db/config_file'
23
+
24
+ require 'command_kit/edit'
25
+
26
+ module Ronin
27
+ module DB
28
+ class CLI
29
+ module Commands
30
+ #
31
+ # Manually edits the `~/.config/ronin-db/database.yml` configuration
32
+ # file.
33
+ #
34
+ # ## Usage
35
+ #
36
+ # ronin-db edit [options]
37
+ #
38
+ # ## Options
39
+ #
40
+ # -h, --help Print help information
41
+ #
42
+ class Edit < Command
43
+
44
+ include CommandKit::Edit
45
+
46
+ description 'Manually edits the database.yml config'
47
+
48
+ man_page 'ronin-db-edit.1'
49
+
50
+ def run
51
+ edit ConfigFile::PATH
52
+ end
53
+
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end