ronin-db 0.1.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.document +5 -0
- data/.github/workflows/ruby.yml +31 -0
- data/.gitignore +13 -0
- data/.rspec +1 -0
- data/.ruby-version +1 -0
- data/.yardopts +1 -0
- data/COPYING.txt +165 -0
- data/ChangeLog.md +12 -0
- data/Gemfile +39 -0
- data/README.md +272 -0
- data/Rakefile +76 -0
- data/bin/ronin-db +35 -0
- data/gemspec.yml +46 -0
- data/lib/ronin/db/cli/command.rb +37 -0
- data/lib/ronin/db/cli/commands/add.rb +206 -0
- data/lib/ronin/db/cli/commands/asn.rb +218 -0
- data/lib/ronin/db/cli/commands/creds.rb +80 -0
- data/lib/ronin/db/cli/commands/edit.rb +58 -0
- data/lib/ronin/db/cli/commands/emails.rb +90 -0
- data/lib/ronin/db/cli/commands/hosts.rb +100 -0
- data/lib/ronin/db/cli/commands/ips.rb +100 -0
- data/lib/ronin/db/cli/commands/irb.rb +81 -0
- data/lib/ronin/db/cli/commands/list.rb +124 -0
- data/lib/ronin/db/cli/commands/migrate.rb +75 -0
- data/lib/ronin/db/cli/commands/remove.rb +69 -0
- data/lib/ronin/db/cli/commands/urls.rb +170 -0
- data/lib/ronin/db/cli/database_command.rb +71 -0
- data/lib/ronin/db/cli/model_command.rb +202 -0
- data/lib/ronin/db/cli/modifiable.rb +141 -0
- data/lib/ronin/db/cli/resources_command.rb +120 -0
- data/lib/ronin/db/cli/ruby_shell.rb +51 -0
- data/lib/ronin/db/cli/uri_methods.rb +97 -0
- data/lib/ronin/db/cli.rb +38 -0
- data/lib/ronin/db/config_file.rb +132 -0
- data/lib/ronin/db/exceptions.rb +26 -0
- data/lib/ronin/db/home.rb +36 -0
- data/lib/ronin/db/root.rb +28 -0
- data/lib/ronin/db/version.rb +26 -0
- data/lib/ronin/db.rb +123 -0
- data/man/ronin-db-add.1 +99 -0
- data/man/ronin-db-add.1.md +75 -0
- data/man/ronin-db-asn.1 +79 -0
- data/man/ronin-db-asn.1.md +59 -0
- data/man/ronin-db-creds.1 +78 -0
- data/man/ronin-db-creds.1.md +58 -0
- data/man/ronin-db-edit.1 +48 -0
- data/man/ronin-db-edit.1.md +36 -0
- data/man/ronin-db-emails.1 +82 -0
- data/man/ronin-db-emails.1.md +61 -0
- data/man/ronin-db-hosts.1 +86 -0
- data/man/ronin-db-hosts.1.md +64 -0
- data/man/ronin-db-ips.1 +90 -0
- data/man/ronin-db-ips.1.md +67 -0
- data/man/ronin-db-irb.1 +61 -0
- data/man/ronin-db-irb.1.md +46 -0
- data/man/ronin-db-list.1 +58 -0
- data/man/ronin-db-list.1.md +44 -0
- data/man/ronin-db-migrate.1 +44 -0
- data/man/ronin-db-migrate.1.md +32 -0
- data/man/ronin-db-remove.1 +55 -0
- data/man/ronin-db-remove.1.md +42 -0
- data/man/ronin-db-urls.1 +98 -0
- data/man/ronin-db-urls.1.md +73 -0
- data/ronin-db.gemspec +78 -0
- data/spec/cli/commands/add_spec.rb +220 -0
- data/spec/cli/commands/edit_spec.rb +12 -0
- data/spec/cli/commands/irb_spec.rb +26 -0
- data/spec/cli/database_command_spec.rb +53 -0
- data/spec/cli/model_command_spec.rb +237 -0
- data/spec/cli/ruby_shell_spec.rb +14 -0
- data/spec/cli/uri_methods_spec.rb +190 -0
- data/spec/spec_helper.rb +15 -0
- metadata +200 -0
@@ -0,0 +1,90 @@
|
|
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
|
+
# Manages email addresses in the database.
|
30
|
+
#
|
31
|
+
# ## Usage
|
32
|
+
#
|
33
|
+
# ronin-db emails [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
|
+
# -H, --with-host [HOST [...]]
|
45
|
+
# -I, --with-ip [IP [...]]
|
46
|
+
# -u, --with-user [NAME [...]]
|
47
|
+
#
|
48
|
+
class Emails < ModelCommand
|
49
|
+
|
50
|
+
include Modifiable
|
51
|
+
|
52
|
+
model_file 'ronin/db/email_address'
|
53
|
+
model_name 'EmailAddress'
|
54
|
+
|
55
|
+
option :with_host, short: '-H',
|
56
|
+
value: {
|
57
|
+
type: String,
|
58
|
+
usage: 'HOST'
|
59
|
+
},
|
60
|
+
desc: 'Searches for the associated HOST(s)' do |host|
|
61
|
+
@query_method_calls << [:with_host_name, [host]]
|
62
|
+
end
|
63
|
+
|
64
|
+
option :with_ip, short: '-I',
|
65
|
+
value: {
|
66
|
+
type: String,
|
67
|
+
usage: 'IP'
|
68
|
+
},
|
69
|
+
desc: 'Searches for the associated IP(s)' do |ip|
|
70
|
+
@query_method_calls << [:with_ip_address, [ip]]
|
71
|
+
end
|
72
|
+
|
73
|
+
option :with_user, short: '-u',
|
74
|
+
value: {
|
75
|
+
type: String,
|
76
|
+
usage: 'USER'
|
77
|
+
},
|
78
|
+
desc: 'Searches for the associated user name' do |user|
|
79
|
+
@query_method_calls << [:with_user_name, [user]]
|
80
|
+
end
|
81
|
+
|
82
|
+
description 'Manages all email addresses in the database'
|
83
|
+
|
84
|
+
man_page 'ronin-db-emails.1'
|
85
|
+
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,100 @@
|
|
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
|
+
# Manages all host names in the database.
|
30
|
+
#
|
31
|
+
# ## Usage
|
32
|
+
#
|
33
|
+
# ronin-db hosts [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
|
+
# -I, --with-ip [IP [...]]
|
45
|
+
# -p, --with-port [PORT [...]]
|
46
|
+
# -D, --domain [DOMAIN]
|
47
|
+
# -T, --tld [TLD]
|
48
|
+
#
|
49
|
+
class Hosts < ModelCommand
|
50
|
+
|
51
|
+
include Modifiable
|
52
|
+
|
53
|
+
model_file 'ronin/db/host_name'
|
54
|
+
model_name 'HostName'
|
55
|
+
|
56
|
+
option :with_ip, short: '-I',
|
57
|
+
value: {
|
58
|
+
type: String,
|
59
|
+
usage: 'IP'
|
60
|
+
},
|
61
|
+
desc: 'Searches for the associated IP(s)' do |ip|
|
62
|
+
@query_method_calls << [:with_ip_address, [ip]]
|
63
|
+
end
|
64
|
+
|
65
|
+
option :with_port, short: '-p',
|
66
|
+
value: {
|
67
|
+
type: Integer,
|
68
|
+
usage: 'PORT'
|
69
|
+
},
|
70
|
+
desc: 'Searches for the associated PORT(s)' do |port|
|
71
|
+
@query_method_calls << [:with_port_number, [port]]
|
72
|
+
end
|
73
|
+
|
74
|
+
option :domain, short: '-D',
|
75
|
+
value: {
|
76
|
+
type: String,
|
77
|
+
usage: 'DOMAIN'
|
78
|
+
},
|
79
|
+
desc: 'Searches for the associated parent DOMAIN' do |domain|
|
80
|
+
@query_method_calls << [:with_domain, [domain]]
|
81
|
+
end
|
82
|
+
|
83
|
+
option :tld, short: '-T',
|
84
|
+
value: {
|
85
|
+
type: String,
|
86
|
+
usage: 'TLD'
|
87
|
+
},
|
88
|
+
desc: 'Searches for the associated TLD' do |tld|
|
89
|
+
@query_method_calls << [:with_tld, [tld]]
|
90
|
+
end
|
91
|
+
|
92
|
+
description 'Manages HostNames'
|
93
|
+
|
94
|
+
man_page 'ronin-db-hosts.1'
|
95
|
+
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,100 @@
|
|
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
|
+
# Manages {IPAddress IPAddresses}.
|
30
|
+
#
|
31
|
+
# ## Usage
|
32
|
+
#
|
33
|
+
# ronin ips [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
|
+
# -4, --v4
|
45
|
+
# -6, --v6
|
46
|
+
# -p, --with-port PORT
|
47
|
+
# -M, --with-mac-addr MAC
|
48
|
+
# -H, --with-host HOST
|
49
|
+
#
|
50
|
+
class Ips < ModelCommand
|
51
|
+
|
52
|
+
include Modifiable
|
53
|
+
|
54
|
+
model_file 'ronin/db/ip_address'
|
55
|
+
model_name 'IPAddress'
|
56
|
+
|
57
|
+
option :v4, short: '-4',
|
58
|
+
desc: 'Searches for IPv4 addresses' do
|
59
|
+
@query_method_calls << :v4
|
60
|
+
end
|
61
|
+
|
62
|
+
option :v6, short: '-6',
|
63
|
+
desc: 'Searches for IPv6 addresses' do
|
64
|
+
@query_method_calls << :v6
|
65
|
+
end
|
66
|
+
|
67
|
+
option :with_port, short: '-p',
|
68
|
+
value: {
|
69
|
+
type: Integer,
|
70
|
+
usage: 'PORT'
|
71
|
+
},
|
72
|
+
desc: 'Searches for the associated PORT(s)' do |port|
|
73
|
+
@query_method_calls << [:with_port_number, [port]]
|
74
|
+
end
|
75
|
+
|
76
|
+
option :with_mac_addr, short: '-M',
|
77
|
+
value: {
|
78
|
+
type: String,
|
79
|
+
usage: 'MAC'
|
80
|
+
},
|
81
|
+
desc: 'Searches for the associated MAC address(es)' do |mac|
|
82
|
+
@query_method_calls << [:with_mac_address, [mac]]
|
83
|
+
end
|
84
|
+
|
85
|
+
option :with_host, short: '-H',
|
86
|
+
value: {
|
87
|
+
type: String,
|
88
|
+
usage: 'HOST'
|
89
|
+
},
|
90
|
+
desc: 'Searches for the associated HOST(s)' do |host|
|
91
|
+
@query_method_calls << [:with_host_name, [host]]
|
92
|
+
end
|
93
|
+
|
94
|
+
description 'Manages IP addresses'
|
95
|
+
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,81 @@
|
|
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/database_command'
|
22
|
+
require 'ronin/db/cli/ruby_shell'
|
23
|
+
|
24
|
+
module Ronin
|
25
|
+
module DB
|
26
|
+
class CLI
|
27
|
+
module Commands
|
28
|
+
#
|
29
|
+
# Connects to a database and start an interactive Ruby shell.
|
30
|
+
#
|
31
|
+
# ## Usage
|
32
|
+
#
|
33
|
+
# ronin-db irb [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
|
+
# --no-connect Do not connect to a database on startup
|
40
|
+
# -h, --help Print help information
|
41
|
+
#
|
42
|
+
class Irb < DatabaseCommand
|
43
|
+
|
44
|
+
option :no_connect, desc: 'Do not connect to a database on startup'
|
45
|
+
|
46
|
+
description "Connects to a database and start an interactive Ruby shell"
|
47
|
+
|
48
|
+
man_page 'ronin-db-irb.1'
|
49
|
+
|
50
|
+
#
|
51
|
+
# Starts the `ronin-db irb` command.
|
52
|
+
#
|
53
|
+
def run
|
54
|
+
unless options[:no_connect]
|
55
|
+
connect
|
56
|
+
load_models
|
57
|
+
end
|
58
|
+
|
59
|
+
set_logger
|
60
|
+
|
61
|
+
CLI::RubyShell.start
|
62
|
+
end
|
63
|
+
|
64
|
+
def set_logger
|
65
|
+
require 'logger'
|
66
|
+
DB.logger = Logger.new(stderr,:debug)
|
67
|
+
end
|
68
|
+
|
69
|
+
#
|
70
|
+
# Loads all models.
|
71
|
+
#
|
72
|
+
def load_models
|
73
|
+
require 'ronin/db/models'
|
74
|
+
Ronin::DB::Models.connect
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,124 @@
|
|
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/options/verbose'
|
25
|
+
require 'command_kit/printing'
|
26
|
+
require 'command_kit/printing/indent'
|
27
|
+
require 'command_kit/printing/fields'
|
28
|
+
|
29
|
+
module Ronin
|
30
|
+
module DB
|
31
|
+
class CLI
|
32
|
+
module Commands
|
33
|
+
#
|
34
|
+
# Lists entries in the `~/.config/ronin-db/database.yml` configuration
|
35
|
+
# file.
|
36
|
+
#
|
37
|
+
# ## Usage
|
38
|
+
#
|
39
|
+
# ronin-db list [options] [NAME]
|
40
|
+
#
|
41
|
+
# ## Options
|
42
|
+
#
|
43
|
+
# -v, --verbose Enables verbose output
|
44
|
+
# -h, --help Print help information
|
45
|
+
#
|
46
|
+
# ## Arguments
|
47
|
+
#
|
48
|
+
# [NAME] Optional DB name to list
|
49
|
+
#
|
50
|
+
class List < Command
|
51
|
+
|
52
|
+
include CommandKit::Options::Verbose
|
53
|
+
include CommandKit::Printing
|
54
|
+
include CommandKit::Printing::Indent
|
55
|
+
include CommandKit::Printing::Fields
|
56
|
+
|
57
|
+
usage '[options] [NAME]'
|
58
|
+
|
59
|
+
argument :name, required: false,
|
60
|
+
desc: 'Optional DB name to list'
|
61
|
+
|
62
|
+
description 'List the configured database(s)'
|
63
|
+
|
64
|
+
man_page 'ronin-db-list.1'
|
65
|
+
|
66
|
+
#
|
67
|
+
# Runs the `ronin-db list` command.
|
68
|
+
#
|
69
|
+
# @param [String, nil] name
|
70
|
+
# The optional database name to list.
|
71
|
+
#
|
72
|
+
def run(name=nil)
|
73
|
+
config = ConfigFile.load
|
74
|
+
|
75
|
+
if name
|
76
|
+
unless (hash = config[name.to_sym])
|
77
|
+
print_error "unknown database #{name.inspect}"
|
78
|
+
exit(1)
|
79
|
+
end
|
80
|
+
|
81
|
+
print_database(name,hash)
|
82
|
+
else
|
83
|
+
config.each do |name,hash|
|
84
|
+
if verbose?
|
85
|
+
print_database(name,hash)
|
86
|
+
puts
|
87
|
+
else
|
88
|
+
puts name
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# Default hidden password placeholder.
|
95
|
+
HIDDEN_PASSWORD = '*******'
|
96
|
+
|
97
|
+
#
|
98
|
+
# Prints a specific entry in the `database.yml` file.
|
99
|
+
#
|
100
|
+
# @param [Symbol] name
|
101
|
+
# The database name.
|
102
|
+
#
|
103
|
+
# @param [Hash{Symbol => String,Integer}] hash
|
104
|
+
# The configuration hash for the database.
|
105
|
+
#
|
106
|
+
def print_database(name,hash)
|
107
|
+
puts "[ #{name} ]"
|
108
|
+
puts
|
109
|
+
|
110
|
+
if hash[:password]
|
111
|
+
# blank out the password by default
|
112
|
+
hash = hash.merge(password: HIDDEN_PASSWORD)
|
113
|
+
end
|
114
|
+
|
115
|
+
indent(2) do
|
116
|
+
print_fields(hash)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,75 @@
|
|
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/database_command'
|
22
|
+
require 'ronin/db'
|
23
|
+
|
24
|
+
module Ronin
|
25
|
+
module DB
|
26
|
+
class CLI
|
27
|
+
module Commands
|
28
|
+
#
|
29
|
+
# Runs database migrations.
|
30
|
+
#
|
31
|
+
# ## Usage
|
32
|
+
#
|
33
|
+
# ronin-db migrate [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
|
+
# -h, --help Print help information
|
40
|
+
#
|
41
|
+
class Migrate < DatabaseCommand
|
42
|
+
|
43
|
+
usage '[options]'
|
44
|
+
|
45
|
+
description 'Runs database migrations'
|
46
|
+
|
47
|
+
man_page 'ronin-db-migrate.1'
|
48
|
+
|
49
|
+
#
|
50
|
+
# Runs the `ronin-db migrate` command.
|
51
|
+
#
|
52
|
+
def run
|
53
|
+
connect
|
54
|
+
migrate
|
55
|
+
end
|
56
|
+
|
57
|
+
#
|
58
|
+
# Connects to the database.
|
59
|
+
#
|
60
|
+
def connect
|
61
|
+
DB.connect(config, load_models: false)
|
62
|
+
end
|
63
|
+
|
64
|
+
#
|
65
|
+
# Runs migrations.
|
66
|
+
#
|
67
|
+
def migrate
|
68
|
+
DB.migrate!
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,69 @@
|
|
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
|
+
module Ronin
|
25
|
+
module DB
|
26
|
+
class CLI
|
27
|
+
module Commands
|
28
|
+
#
|
29
|
+
# Removes an entry from the `database.yml` config file.
|
30
|
+
#
|
31
|
+
# ## Usage
|
32
|
+
#
|
33
|
+
# ronin-db remove [options] NAME
|
34
|
+
#
|
35
|
+
# ## Options
|
36
|
+
#
|
37
|
+
# -h, --help Print help information
|
38
|
+
#
|
39
|
+
# ## Arguments
|
40
|
+
#
|
41
|
+
# NAME The DB name to remove
|
42
|
+
#
|
43
|
+
class Remove < Command
|
44
|
+
|
45
|
+
usage '[options] NAME'
|
46
|
+
|
47
|
+
argument :name, desc: 'The DB name to remove'
|
48
|
+
|
49
|
+
description 'Removed a database from the configuration file'
|
50
|
+
|
51
|
+
man_page 'ronin-db-remove.1'
|
52
|
+
|
53
|
+
#
|
54
|
+
# Runs the `ronin-db remove` command.
|
55
|
+
#
|
56
|
+
# @param [String] name
|
57
|
+
# The database name to remove.
|
58
|
+
#
|
59
|
+
def run(name)
|
60
|
+
ConfigFile.edit do |config|
|
61
|
+
config.delete(name.to_sym)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|