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.
- 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
|