ronin-db 0.1.3 → 0.2.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +1 -0
  3. data/.gitignore +1 -0
  4. data/ChangeLog.md +28 -0
  5. data/Gemfile +6 -4
  6. data/README.md +17 -5
  7. data/Rakefile +13 -35
  8. data/data/completions/ronin-db +271 -0
  9. data/gemspec.yml +17 -2
  10. data/lib/ronin/db/cli/command.rb +1 -1
  11. data/lib/ronin/db/cli/commands/add.rb +1 -1
  12. data/lib/ronin/db/cli/commands/asn.rb +12 -2
  13. data/lib/ronin/db/cli/commands/certs.rb +322 -0
  14. data/lib/ronin/db/cli/commands/completion.rb +63 -0
  15. data/lib/ronin/db/cli/commands/creds.rb +2 -1
  16. data/lib/ronin/db/cli/commands/edit.rb +1 -1
  17. data/lib/ronin/db/cli/commands/emails.rb +22 -1
  18. data/lib/ronin/db/cli/commands/hosts.rb +2 -1
  19. data/lib/ronin/db/cli/commands/ips.rb +2 -1
  20. data/lib/ronin/db/cli/commands/irb.rb +8 -4
  21. data/lib/ronin/db/cli/commands/list.rb +1 -1
  22. data/lib/ronin/db/cli/commands/migrate.rb +12 -8
  23. data/lib/ronin/db/cli/commands/open_ports.rb +102 -0
  24. data/lib/ronin/db/cli/commands/oses.rb +95 -0
  25. data/lib/ronin/db/cli/commands/passwords.rb +83 -0
  26. data/lib/ronin/db/cli/commands/people.rb +185 -0
  27. data/lib/ronin/db/cli/commands/phone_numbers.rb +136 -0
  28. data/lib/ronin/db/cli/commands/ports.rb +103 -0
  29. data/lib/ronin/db/cli/commands/remove.rb +1 -1
  30. data/lib/ronin/db/cli/commands/services.rb +102 -0
  31. data/lib/ronin/db/cli/commands/software.rb +95 -0
  32. data/lib/ronin/db/cli/commands/street_addresses.rb +129 -0
  33. data/lib/ronin/db/cli/commands/urls.rb +2 -1
  34. data/lib/ronin/db/cli/commands/web_vulns.rb +235 -0
  35. data/lib/ronin/db/cli/database_options.rb +87 -0
  36. data/lib/ronin/db/cli/deletable.rb +85 -0
  37. data/lib/ronin/db/cli/importable.rb +108 -0
  38. data/lib/ronin/db/cli/model_command.rb +8 -6
  39. data/lib/ronin/db/cli/modifiable.rb +12 -104
  40. data/lib/ronin/db/cli/printing.rb +58 -0
  41. data/lib/ronin/db/cli/ruby_shell.rb +1 -1
  42. data/lib/ronin/db/cli/uri_methods.rb +1 -1
  43. data/lib/ronin/db/cli.rb +3 -1
  44. data/lib/ronin/db/config_file.rb +1 -1
  45. data/lib/ronin/db/exceptions.rb +1 -1
  46. data/lib/ronin/db/home.rb +1 -1
  47. data/lib/ronin/db/root.rb +1 -1
  48. data/lib/ronin/db/tasks.rb +87 -0
  49. data/lib/ronin/db/version.rb +2 -2
  50. data/lib/ronin/db.rb +15 -7
  51. data/man/ronin-db-add.1 +47 -69
  52. data/man/ronin-db-add.1.md +26 -22
  53. data/man/ronin-db-asn.1 +36 -54
  54. data/man/ronin-db-asn.1.md +29 -19
  55. data/man/ronin-db-certs.1 +108 -0
  56. data/man/ronin-db-certs.1.md +106 -0
  57. data/man/ronin-db-completion.1 +76 -0
  58. data/man/ronin-db-completion.1.md +78 -0
  59. data/man/ronin-db-creds.1 +28 -46
  60. data/man/ronin-db-creds.1.md +23 -16
  61. data/man/ronin-db-edit.1 +15 -26
  62. data/man/ronin-db-edit.1.md +11 -7
  63. data/man/ronin-db-emails.1 +36 -49
  64. data/man/ronin-db-emails.1.md +30 -17
  65. data/man/ronin-db-hosts.1 +31 -51
  66. data/man/ronin-db-hosts.1.md +25 -18
  67. data/man/ronin-db-ips.1 +31 -52
  68. data/man/ronin-db-ips.1.md +26 -19
  69. data/man/ronin-db-irb.1 +22 -35
  70. data/man/ronin-db-irb.1.md +17 -10
  71. data/man/ronin-db-list.1 +16 -30
  72. data/man/ronin-db-list.1.md +13 -9
  73. data/man/ronin-db-migrate.1 +22 -35
  74. data/man/ronin-db-migrate.1.md +17 -10
  75. data/man/ronin-db-open-ports.1 +72 -0
  76. data/man/ronin-db-open-ports.1.md +70 -0
  77. data/man/ronin-db-oses.1 +72 -0
  78. data/man/ronin-db-oses.1.md +70 -0
  79. data/man/ronin-db-passwords.1 +75 -0
  80. data/man/ronin-db-passwords.1.md +73 -0
  81. data/man/ronin-db-people.1 +96 -0
  82. data/man/ronin-db-people.1.md +94 -0
  83. data/man/ronin-db-phone-numbers.1 +93 -0
  84. data/man/ronin-db-phone-numbers.1.md +91 -0
  85. data/man/ronin-db-ports.1 +87 -0
  86. data/man/ronin-db-ports.1.md +85 -0
  87. data/man/ronin-db-remove.1 +15 -28
  88. data/man/ronin-db-remove.1.md +12 -8
  89. data/man/ronin-db-services.1 +84 -0
  90. data/man/ronin-db-services.1.md +82 -0
  91. data/man/ronin-db-software.1 +72 -0
  92. data/man/ronin-db-software.1.md +70 -0
  93. data/man/ronin-db-street-addresses.1 +81 -0
  94. data/man/ronin-db-street-addresses.1.md +79 -0
  95. data/man/ronin-db-urls.1 +37 -60
  96. data/man/ronin-db-urls.1.md +28 -21
  97. data/man/ronin-db-web-vulns.1 +87 -0
  98. data/man/ronin-db-web-vulns.1.md +85 -0
  99. data/man/ronin-db.1 +118 -0
  100. data/man/ronin-db.1.md +99 -0
  101. data/scripts/setup +58 -0
  102. metadata +52 -9
  103. data/lib/ronin/db/cli/database_command.rb +0 -71
  104. data/lib/ronin/db/cli/resources_command.rb +0 -118
@@ -0,0 +1,322 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # ronin-db - A common database library for managing and querying security data.
4
+ #
5
+ # Copyright (c) 2006-2024 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
+
23
+ require 'command_kit/printing/indent'
24
+ require 'command_kit/printing/fields'
25
+ require 'command_kit/printing/lists'
26
+
27
+ module Ronin
28
+ module DB
29
+ class CLI
30
+ module Commands
31
+ #
32
+ # Queries or imports SSL/TLS certificates.
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
+ # --db-file PATH The sqlite3 database file to use
43
+ # -v, --verbose Enables verbose output
44
+ # -A, --active Searches for all Certs that are active
45
+ # -E, --expired Searches for all Certs that are expired
46
+ # --issuer-common-name NAME Searches for all Certs with the Issuer Common Name (CN)
47
+ # --issuer-organization NAME Searches for all Certs with the Issuer Organization (O)
48
+ # --issuer-organizational-unit NAME
49
+ # Searches for all Certs with the Issuer Organizational Unit (OU)
50
+ # --issuer-locality LOCALITY Searches for all Certs with the Issuer Locality (L)
51
+ # --issuer-state STATE Searches for all Certs with the Issuer State (ST)
52
+ # --issuer-country COUNTRY Searches for all Certs with the Issuer Country (C)
53
+ # --common-name HOST Searches for all Certs with the Subject Common Name (CN)
54
+ # --subject-alt-name HOST Searches for all Certs with the Subject Alternative Name (SAN)
55
+ # --organization NAME Searches for all Certs with the Subject Organization (O)
56
+ # --organizational-unit NAME Searches for all Certs with the Subject Organizational Unit (OU)
57
+ # --locality LOCALITY Searches for all Certs with the Subject Locality (L)
58
+ # --state STATE Searches for all Certs with the Subject State (ST)
59
+ # --country COUNTRY Searches for all Certs with the Subject Country (C)
60
+ # --import FILE Imports a Cert from a file
61
+ # -h, --help Print help information
62
+ #
63
+ # @since 0.2.0
64
+ #
65
+ class Certs < ModelCommand
66
+
67
+ include CommandKit::Printing::Indent
68
+ include CommandKit::Printing::Fields
69
+ include CommandKit::Printing::Lists
70
+
71
+ model_file 'ronin/db/cert'
72
+ model_name 'Cert'
73
+
74
+ option :active, short: '-A',
75
+ desc: 'Searches for all Certs that are active' do
76
+ @query_method_calls << [:active]
77
+ end
78
+
79
+ option :expired, short: '-E',
80
+ desc: 'Searches for all Certs that are expired' do
81
+ @query_method_calls << [:expired]
82
+ end
83
+
84
+ option :issuer_common_name, value: {
85
+ type: String,
86
+ usage: 'NAME'
87
+ },
88
+ desc: 'Searches for all Certs with the Issuer Common Name (CN)' do |name|
89
+ @query_method_calls << [:with_issuer_common_name, [name]]
90
+ end
91
+
92
+ option :issuer_organization, value: {
93
+ type: String,
94
+ usage: 'NAME'
95
+ },
96
+ desc: 'Searches for all Certs with the Issuer Organization (O)' do |name|
97
+ @query_method_calls << [:with_issuer_organization, [name]]
98
+ end
99
+
100
+ option :issuer_organizational_unit, value: {
101
+ type: String,
102
+ usage: 'NAME'
103
+ },
104
+ desc: 'Searches for all Certs with the Issuer Organizational Unit (OU)' do |name|
105
+ @query_method_calls << [:with_issuer_organizational_unit, [name]]
106
+ end
107
+
108
+ option :issuer_locality, value: {
109
+ type: String,
110
+ usage: 'LOCALITY'
111
+ },
112
+ desc: 'Searches for all Certs with the Issuer Locality (L)' do |locality|
113
+ @query_method_calls << [:with_issuer_locality, [locality]]
114
+ end
115
+
116
+ option :issuer_state, value: {
117
+ type: String,
118
+ usage: 'STATE'
119
+ },
120
+ desc: 'Searches for all Certs with the Issuer State (ST)' do |state|
121
+ @query_method_calls << [:with_issuer_state, [state]]
122
+ end
123
+
124
+ option :issuer_country, value: {
125
+ type: String,
126
+ usage: 'COUNTRY'
127
+ },
128
+ desc: 'Searches for all Certs with the Issuer Country (C)' do |country|
129
+ @query_method_calls << [:with_issuer_country, [country]]
130
+ end
131
+
132
+ option :common_name, value: {
133
+ type: String,
134
+ usage: 'HOST'
135
+ },
136
+ desc: 'Searches for all Certs with the Subject Common Name (CN)' do |host|
137
+ @query_method_calls << [:with_common_name, [host]]
138
+ end
139
+
140
+ option :subject_alt_name, value: {
141
+ type: String,
142
+ usage: 'HOST'
143
+ },
144
+ desc: 'Searches for all Certs with the Subject Alternative Name (SAN)' do |host|
145
+ @query_method_calls << [:with_subject_alt_name, [host]]
146
+ end
147
+
148
+ option :organization, value: {
149
+ type: String,
150
+ usage: 'NAME'
151
+ },
152
+ desc: 'Searches for all Certs with the Subject Organization (O)' do |name|
153
+ @query_method_calls << [:with_organization, [name]]
154
+ end
155
+
156
+ option :organizational_unit, value: {
157
+ type: String,
158
+ usage: 'NAME'
159
+ },
160
+ desc: 'Searches for all Certs with the Subject Organizational Unit (OU)' do |name|
161
+ @query_method_calls << [:with_organizational_unit, [name]]
162
+ end
163
+
164
+ option :locality, value: {
165
+ type: String,
166
+ usage: 'LOCALITY'
167
+ },
168
+ desc: 'Searches for all Certs with the Subject Locality (L)' do |locality|
169
+ @query_method_calls << [:with_locality, [locality]]
170
+ end
171
+
172
+ option :state, value: {
173
+ type: String,
174
+ usage: 'STATE'
175
+ },
176
+ desc: 'Searches for all Certs with the Subject State (ST)' do |state|
177
+ @query_method_calls << [:with_state, [state]]
178
+ end
179
+
180
+ option :country, value: {
181
+ type: String,
182
+ usage: 'COUNTRY'
183
+ },
184
+ desc: 'Searches for all Certs with the Subject Country (C)' do |country|
185
+ @query_method_calls << [:with_country, [country]]
186
+ end
187
+
188
+ option :import, value: {
189
+ type: String,
190
+ usage: 'FILE'
191
+ },
192
+ desc: 'Imports a Cert from a file'
193
+
194
+ description 'Queries or imports SSL/TLS certificates'
195
+
196
+ man_page 'ronin-db-certs.1'
197
+
198
+ #
199
+ # Runs the `ronin-db certs` command.
200
+ #
201
+ def run
202
+ db_connect
203
+
204
+ if options[:import]
205
+ import_cert(options[:import])
206
+ else
207
+ list
208
+ end
209
+ end
210
+
211
+ #
212
+ # Imports a certificate from a file.
213
+ #
214
+ # @param [String] path
215
+ # The path to the certificate file.
216
+ #
217
+ def import_cert(path)
218
+ unless File.file?(path)
219
+ print_error "no such file or directory: #{path}"
220
+ exit(-1)
221
+ end
222
+
223
+ cert = begin
224
+ Ronin::Support::Crypto::Cert.load_file(path)
225
+ rescue OpenSSL::X509::CertificateError
226
+ print_error "cannot parse the certificate file: #{path}"
227
+ exit(-1)
228
+ end
229
+
230
+ model.find_or_import(cert)
231
+ end
232
+
233
+ #
234
+ # Prints a certificate record.
235
+ #
236
+ # @param [Ronin::DB::Cert] cert
237
+ # The certificate record to print.
238
+ #
239
+ def print_record(cert)
240
+ puts "[ #{cert.subject.common_name} ]"
241
+ puts
242
+
243
+ indent do
244
+ print_fields(
245
+ "Serial" => cert.serial,
246
+ "Not Before" => cert.not_before,
247
+ "Not After" => cert.not_after
248
+ )
249
+ puts
250
+
251
+ puts "Subject:"
252
+ indent { print_cert_org(cert.subject) }
253
+ puts
254
+
255
+ unless cert.subject_alt_names.empty?
256
+ puts "Subject Alt Names:"
257
+ indent { print_list(cert.subject_alt_names) }
258
+ puts
259
+ end
260
+
261
+ if cert.issuer
262
+ puts "Issuer:"
263
+ indent { print_cert_org(cert.issuer) }
264
+ puts
265
+ end
266
+
267
+ print_fields(
268
+ 'Public Key Algorithm' => cert.public_key_algorithm.upcase,
269
+ 'Public Key Size' => cert.public_key_size,
270
+ 'Signing Algorithm' => cert.signing_algorithm,
271
+ 'SHA1 Fingerprint' => cert.sha1_fingerprint,
272
+ 'SHA256 Fingerprint' => cert.sha256_fingerprint
273
+ )
274
+ end
275
+ puts
276
+ end
277
+
278
+ #
279
+ # Prints a certificate Subject or Issuer.
280
+ #
281
+ # @param [Ronin::DB::CertSubject, Ronin::DB::CertIssuer] cert_org
282
+ # The Subject or Issuer to print.
283
+ #
284
+ def print_cert_org(cert_org)
285
+ fields = {}
286
+
287
+ if cert_org.common_name
288
+ fields['Common Name (CN)'] = cert_org.common_name
289
+ end
290
+
291
+ if cert_org.email_address
292
+ fields['Email address'] = cert_org.email_address
293
+ end
294
+
295
+ if cert_org.organization
296
+ fields['Organization (O)'] = cert_org.organization
297
+ end
298
+
299
+ if cert_org.organizational_unit
300
+ fields['Organization Unit (OU)'] = cert_org.organizational_unit
301
+ end
302
+
303
+ if cert_org.locality
304
+ fields['Locality (L)'] = cert_org.locality
305
+ end
306
+
307
+ if cert_org.state
308
+ fields['State (ST)'] = cert_org.state
309
+ end
310
+
311
+ if cert_org.country
312
+ fields['Country (C)'] = cert_org.country
313
+ end
314
+
315
+ print_fields(fields)
316
+ end
317
+
318
+ end
319
+ end
320
+ end
321
+ end
322
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # ronin-db - A common database library for managing and querying security data.
4
+ #
5
+ # Copyright (c) 2006-2024 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
+ require 'ronin/core/cli/completion_command'
23
+
24
+ module Ronin
25
+ module DB
26
+ class CLI
27
+ module Commands
28
+ #
29
+ # Manages the shell completion rules for `ronin-db`.
30
+ #
31
+ # ## Usage
32
+ #
33
+ # ronin-db completion [options]
34
+ #
35
+ # ## Options
36
+ #
37
+ # --print Prints the shell completion file
38
+ # --install Installs the shell completion file
39
+ # --uninstall Uninstalls the shell completion file
40
+ # -h, --help Print help information
41
+ #
42
+ # ## Examples
43
+ #
44
+ # ronin-db completion --print
45
+ # ronin-db completion --install
46
+ # ronin-db completion --uninstall
47
+ #
48
+ # @since 0.2.0
49
+ #
50
+ class Completion < Core::CLI::CompletionCommand
51
+
52
+ completion_file File.join(ROOT,'data','completions','ronin-db')
53
+
54
+ man_dir File.join(ROOT,'man')
55
+ man_page 'ronin-db-completion.1'
56
+
57
+ description 'Manages the shell completion rules for ronin-db'
58
+
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-db - A common database library for managing and querying security data.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-db is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU Lesser General Public License as published
@@ -36,6 +36,7 @@ module Ronin
36
36
  #
37
37
  # --db NAME The database to connect to (Default: default)
38
38
  # --db-uri URI The database URI to connect to
39
+ # --db-file PATH The sqlite3 database file to use
39
40
  # -v, --verbose Enables verbose output
40
41
  # --add VALUE Adds a value to the database
41
42
  # --import FILE Imports the values from the FILE into the database
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-db - A common database library for managing and querying security data.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-db is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU Lesser General Public License as published
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-db - A common database library for managing and querying security data.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-db is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU Lesser General Public License as published
@@ -36,6 +36,7 @@ module Ronin
36
36
  #
37
37
  # --db NAME The database to connect to (Default: default)
38
38
  # --db-uri URI The database URI to connect to
39
+ # --db-file PATH The sqlite3 database file to use
39
40
  # -v, --verbose Enables verbose output
40
41
  # --add VALUE Adds a value to the database
41
42
  # --import FILE Imports the values from the FILE into the database
@@ -44,6 +45,8 @@ module Ronin
44
45
  # -H, --with-host [HOST [...]]
45
46
  # -I, --with-ip [IP [...]]
46
47
  # -u, --with-user [NAME [...]]
48
+ # -P, --for-person FULL_NAME Searches for the associated person
49
+ # -O, --for-organization NAME Searches for the associated organization
47
50
  #
48
51
  class Emails < ModelCommand
49
52
 
@@ -79,6 +82,24 @@ module Ronin
79
82
  @query_method_calls << [:with_user_name, [user]]
80
83
  end
81
84
 
85
+ option :for_person, short: '-P',
86
+ value: {
87
+ type: String,
88
+ usage: 'FULL_NAME'
89
+ },
90
+ desc: 'Searches for the associated person' do |full_name|
91
+ @query_method_calls << [:for_person, [full_name]]
92
+ end
93
+
94
+ option :for_organization, short: '-O',
95
+ value: {
96
+ type: String,
97
+ usage: 'NAME'
98
+ },
99
+ desc: 'Searches for the associated organization' do |name|
100
+ @query_method_calls << [:for_organization, [name]]
101
+ end
102
+
82
103
  description 'Manages all email addresses in the database'
83
104
 
84
105
  man_page 'ronin-db-emails.1'
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-db - A common database library for managing and querying security data.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-db is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU Lesser General Public License as published
@@ -36,6 +36,7 @@ module Ronin
36
36
  #
37
37
  # --db NAME The database to connect to (Default: default)
38
38
  # --db-uri URI The database URI to connect to
39
+ # --db-file PATH The sqlite3 database file to use
39
40
  # -v, --verbose Enables verbose output
40
41
  # --add VALUE Adds a value to the database
41
42
  # --import FILE Imports the values from the FILE into the database
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-db - A common database library for managing and querying security data.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-db is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU Lesser General Public License as published
@@ -36,6 +36,7 @@ module Ronin
36
36
  #
37
37
  # --db NAME The database to connect to (Default: default)
38
38
  # --db-uri URI The database URI to connect to
39
+ # --db-file PATH The sqlite3 database file to use
39
40
  # -v, --verbose Enables verbose output
40
41
  # --add VALUE Adds a value to the database
41
42
  # --import FILE Imports the values from the FILE into the database
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-db - A common database library for managing and querying security data.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-db is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU Lesser General Public License as published
@@ -18,7 +18,8 @@
18
18
  # along with ronin-db. If not, see <https://www.gnu.org/licenses/>.
19
19
  #
20
20
 
21
- require 'ronin/db/cli/database_command'
21
+ require 'ronin/db/cli/command'
22
+ require 'ronin/db/cli/database_options'
22
23
  require 'ronin/db/cli/ruby_shell'
23
24
 
24
25
  module Ronin
@@ -36,10 +37,13 @@ module Ronin
36
37
  #
37
38
  # --db NAME The database to connect to (Default: default)
38
39
  # --db-uri URI The database URI to connect to
40
+ # --db-file PATH The sqlite3 database file to use
39
41
  # --no-connect Do not connect to a database on startup
40
42
  # -h, --help Print help information
41
43
  #
42
- class Irb < DatabaseCommand
44
+ class Irb < Command
45
+
46
+ include DatabaseOptions
43
47
 
44
48
  option :no_connect, desc: 'Do not connect to a database on startup'
45
49
 
@@ -52,7 +56,7 @@ module Ronin
52
56
  #
53
57
  def run
54
58
  unless options[:no_connect]
55
- connect
59
+ db_connect
56
60
  load_models
57
61
  end
58
62
 
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-db - A common database library for managing and querying security data.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-db is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU Lesser General Public License as published
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # ronin-db - A common database library for managing and querying security data.
4
4
  #
5
- # Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
6
6
  #
7
7
  # ronin-db is free software: you can redistribute it and/or modify
8
8
  # it under the terms of the GNU Lesser General Public License as published
@@ -18,7 +18,8 @@
18
18
  # along with ronin-db. If not, see <https://www.gnu.org/licenses/>.
19
19
  #
20
20
 
21
- require 'ronin/db/cli/database_command'
21
+ require 'ronin/db/cli/command'
22
+ require 'ronin/db/cli/database_options'
22
23
  require 'ronin/db'
23
24
 
24
25
  module Ronin
@@ -36,9 +37,12 @@ module Ronin
36
37
  #
37
38
  # --db NAME The database to connect to (Default: default)
38
39
  # --db-uri URI The database URI to connect to
40
+ # --db-file PATH The sqlite3 database file to use
39
41
  # -h, --help Print help information
40
42
  #
41
- class Migrate < DatabaseCommand
43
+ class Migrate < Command
44
+
45
+ include DatabaseOptions
42
46
 
43
47
  usage '[options]'
44
48
 
@@ -50,21 +54,21 @@ module Ronin
50
54
  # Runs the `ronin-db migrate` command.
51
55
  #
52
56
  def run
53
- connect
54
- migrate
57
+ db_connect
58
+ db_migrate
55
59
  end
56
60
 
57
61
  #
58
62
  # Connects to the database.
59
63
  #
60
- def connect
61
- DB.connect(config, load_models: false)
64
+ def db_connect
65
+ DB.connect(db_config, load_models: false)
62
66
  end
63
67
 
64
68
  #
65
69
  # Runs migrations.
66
70
  #
67
- def migrate
71
+ def db_migrate
68
72
  DB.migrate!
69
73
  end
70
74