Skip to content

Commit

Permalink
Merge branch 'shell-completion' into 2.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
postmodern committed Jan 4, 2024
2 parents a7836ea + 3f50f7a commit 83f6e1f
Show file tree
Hide file tree
Showing 22 changed files with 279 additions and 21 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/coverage
/data/completions/ronin
/doc
/pkg
/man/*.[1-9]
Expand Down
24 changes: 13 additions & 11 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ if RUBY_VERSION >= '3.1.0'
gem 'net-imap', '~> 0.1', group: :net, platform: :mri
end

# gem 'command_kit', '~> 0.4', github: 'postmodern/command_kit.rb',
# branch: '0.4.0'
# gem 'command_kit', '~> 0.5', github: 'postmodern/command_kit.rb',
# branch: 'main'

group :database do
gem 'sqlite3', '~> 1.0', platform: :mri
Expand All @@ -25,10 +25,10 @@ end
# Library dependencies
gem 'ronin-support', '~> 1.1', github: "ronin-rb/ronin-support",
branch: '1.1.0'
gem 'ronin-core', '~> 0.2', github: "ronin-rb/ronin-core",
gem 'ronin-core', '~> 0.2', github: 'ronin-rb/ronin-core',
branch: '0.2.0'
gem 'ronin-repos', '~> 0.1', github: 'ronin-rb/ronin-repos',
branch: '0.2.0'
# gem 'ronin-repos', '~> 0.1', github: "ronin-rb/ronin-repos",
# branch: 'main'
gem 'ronin-db-activerecord', '~> 0.2', github: "ronin-rb/ronin-db-activerecord",
branch: '0.2.0'
gem 'ronin-db', '~> 0.2', github: "ronin-rb/ronin-db",
Expand All @@ -39,18 +39,18 @@ gem 'ronin-listener-http', '~> 0.1', github: "ronin-rb/ronin-listener-http"
branch: 'main'
gem 'ronin-listener', '~> 0.1', github: "ronin-rb/ronin-listener",
branch: 'main'
# gem 'ronin-fuzzer', '~> 0.1', github: 'ronin-rb/ronin-fuzzer',
# branch: 'main'
gem 'ronin-fuzzer', '~> 0.2', github: 'ronin-rb/ronin-fuzzer',
branch: '0.2.0'
# gem 'ronin-post_ex', '~> 0.1', github: 'ronin-rb/ronin-post_ex',
# branch: 'main'
# gem 'ronin-code-asm', '~> 1.0', github: 'ronin-rb/ronin-code-asm',
# branch: 'main'
# gem 'ronin-code-sql', '~> 2.0', github: 'ronin-rb/ronin-code-sql',
# branch: 'main'
# gem 'ronin-payloads', '~> 0.1', github: 'ronin-rb/ronin-payloads',
# branch: 'main'
# gem 'ronin-exploits', '~> 1.0', github: 'ronin-rb/ronin-exploits',
# branch: 'main'
gem 'ronin-payloads', '~> 0.2', github: 'ronin-rb/ronin-payloads',
branch: '0.2.0'
gem 'ronin-exploits', '~> 1.1', github: 'ronin-rb/ronin-exploits',
branch: '1.1.0'
gem 'ronin-vulns', '~> 0.2', github: 'ronin-rb/ronin-vulns',
branch: '0.2.0'
# gem 'ronin-web-server', '~> 0.1', github: 'ronin-rb/ronin-web-server',
Expand Down Expand Up @@ -98,4 +98,6 @@ group :development do
gem 'rubocop', require: false, platform: :mri
gem 'rubocop-ronin', require: false, platform: :mri
gem 'pry', require: false

gem 'command_kit-completion', '~> 0.1', require: false
end
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ Commands:
cert-dump
cert-gen
cert-grab
completion
decode, dec
decrypt
dns
Expand Down
7 changes: 7 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,10 @@ task :docs => [:yard]

require 'kramdown/man/task'
Kramdown::Man::Task.new

require 'command_kit/completion/task'
CommandKit::Completion::Task.new(
class_file: 'ronin/cli',
class_name: 'Ronin::CLI',
output_file: 'data/completions/ronin'
)
8 changes: 5 additions & 3 deletions gemspec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ metadata:
rubygems_mfa_required: 'true'

generated_files:
- data/completions/ronin
- man/ronin.1
- man/ronin-asn.1
- man/ronin-banner-grab.1
Expand All @@ -45,6 +46,7 @@ generated_files:
- man/ronin-cert-dump.1
- man/ronin-cert-gen.1
- man/ronin-cert-grab.1
- man/ronin-completion.1
- man/ronin-decode.1
- man/ronin-decrypt.1
- man/ronin-dns.1
Expand Down Expand Up @@ -103,13 +105,13 @@ dependencies:
ronin-support: ~> 1.1
ronin-dns-proxy: ~> 0.1
ronin-core: ~> 0.2
ronin-repos: ~> 0.1
ronin-db: ~> 0.1
ronin-repos: ~> 0.2
ronin-db: ~> 0.2
ronin-listener: ~> 0.1
ronin-nmap: ~> 0.1
ronin-masscan: ~> 0.1
ronin-recon: ~> 0.1
ronin-fuzzer: ~> 0.1
ronin-fuzzer: ~> 0.2
ronin-web: ~> 2.0
ronin-code-asm: ~> 1.0
ronin-code-sql: ~> 2.0
Expand Down
2 changes: 2 additions & 0 deletions lib/ronin/cli/commands/banner_grab.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ class BannerGrab < ValueProcessorCommand

include HostAndPort

command_name 'banner-grab'

usage '[options] {HOST:PORT} ...'

option :with_host_port, desc: 'Print the service with the banner'
Expand Down
2 changes: 2 additions & 0 deletions lib/ronin/cli/commands/cert_dump.rb
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ class CertDump < ValueProcessorCommand
include CommandKit::Printing::Lists
include HostAndPort

command_name 'cert-dump'

usage '[options] {HOST:PORT | URL | FILE} ...'

option :common_name, short: '-C',
Expand Down
2 changes: 2 additions & 0 deletions lib/ronin/cli/commands/cert_gen.rb
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ class CertGen < Command

include Core::CLI::Logging

command_name 'cert-gen'

option :version, value: {
type: Integer,
usage: 'NUM',
Expand Down
2 changes: 2 additions & 0 deletions lib/ronin/cli/commands/cert_grab.rb
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ class CertGrab < ValueProcessorCommand

include HostAndPort

command_name 'cert-grab'

usage '[options] {HOST:PORT | URL} ...'

argument :target, required: true,
Expand Down
113 changes: 113 additions & 0 deletions lib/ronin/cli/commands/completion.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# frozen_string_literal: true
#
# Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
#
# Ronin is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ronin is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ronin. If not, see <https://www.gnu.org/licenses/>.
#

require 'ronin/core/cli/completion_command'
require 'ronin/repos/cli/commands/completion'
require 'ronin/db/cli/commands/completion'
require 'ronin/fuzzer/cli/commands/completion'
require 'ronin/web/cli/commands/completion'
require 'ronin/vulns/cli/commands/completion'
require 'ronin/payloads/cli/commands/completion'
require 'ronin/exploits/cli/commands/completion'
require 'ronin/listener/cli/commands/completion'
require 'ronin/nmap/cli/commands/completion'
require 'ronin/masscan/cli/commands/completion'
require 'ronin/recon/cli/commands/completion'
require 'ronin/root'

module Ronin
class CLI
module Commands
#
# Manages the shell completion rule for `ronin` and all other `ronin-*`
# commands.
#
# ## Usage
#
# ronin completion [options]
#
# ## Options
#
# --print Prints the shell completion file
# --install Installs the shell completion file
# --uninstall Uninstalls the shell completion file
# -h, --help Print help information
#
# ## Examples
#
# ronin completion --print
# ronin completion --install
# ronin completion --uninstall
#
# @since 2.1.0
#
class Completion < Core::CLI::CompletionCommand

man_dir File.join(ROOT,'man')
man_page 'ronin-completion.1'

description 'Manages the shell completion rules for ronin and all other ronin-* commands'

# All shell completion files for `ronin` and the other `ronin-*`
# commands.
COMPLETION_FILES = [
File.join(ROOT,'data','completions','ronin'),

Repos::CLI::Commands::Completion.completion_file,
DB::CLI::Commands::Completion.completion_file,
Fuzzer::CLI::Commands::Completion.completion_file,
Web::CLI::Commands::Completion.completion_file,
Vulns::CLI::Commands::Completion.completion_file,
Payloads::CLI::Commands::Completion.completion_file,
Exploits::CLI::Commands::Completion.completion_file,
Listener::CLI::Commands::Completion.completion_file,
Nmap::CLI::Commands::Completion.completion_file,
Masscan::CLI::Commands::Completion.completion_file,
Recon::CLI::Commands::Completion.completion_file
]

#
# Prints all completion files.
#
def print_completion_file
COMPLETION_FILES.each do |completion_file|
super(completion_file)
end
end

#
# Installs all completion files.
#
def install_completion_file
COMPLETION_FILES.each do |completion_file|
super(completion_file)
end
end

#
# Uninstall all completion files.
#
def uninstall_completion_file
COMPLETION_FILES.each do |completion_file|
super(completion_file)
end
end
end
end
end
end
6 changes: 5 additions & 1 deletion lib/ronin/cli/commands/new/dns_listener.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ class New < Command
# An alias for `ronin-listener new dns`.
#
# @since 2.1.0
DnsListener = Ronin::Listener::CLI::Commands::New::Dns
class DnsListener < Ronin::Listener::CLI::Commands::New::Dns

command_name 'dns-listener'

end
end
end
end
Expand Down
2 changes: 2 additions & 0 deletions lib/ronin/cli/commands/new/dns_proxy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ class DnsProxy < Command

template_dir File.join(ROOT,'data','templates')

command_name 'dns-proxy'

usage 'PATH'

option :host, short: '-H',
Expand Down
3 changes: 2 additions & 1 deletion lib/ronin/cli/commands/new/exploit.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ class New < Command
# An alias for `ronin-exploits new`.
#
# @since 2.1.0
Exploit = Ronin::Exploits::CLI::Commands::New
class Exploit < Ronin::Exploits::CLI::Commands::New
end
end
end
end
Expand Down
6 changes: 5 additions & 1 deletion lib/ronin/cli/commands/new/http_listener.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ class New < Command
# An alias for `ronin-listener new http`.
#
# @since 2.1.0
HttpListener = Ronin::Listener::CLI::Commands::New::Http
class HttpListener < Ronin::Listener::CLI::Commands::New::Http

command_name 'http-listener'

end
end
end
end
Expand Down
3 changes: 2 additions & 1 deletion lib/ronin/cli/commands/new/payload.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ class New < Command
# An alias for `ronin-payloads new`.
#
# @since 2.1.0
Payload = Ronin::Payloads::CLI::Commands::New
class Payload < Ronin::Payloads::CLI::Commands::New
end
end
end
end
Expand Down
6 changes: 5 additions & 1 deletion lib/ronin/cli/commands/new/web_app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ class New < Command
# An alias for `ronin-web new app`.
#
# @since 2.1.0
WebApp = Ronin::Web::CLI::Commands::New::App
class WebApp < Ronin::Web::CLI::Commands::New::App

command_name 'web-app'

end
end
end
end
Expand Down
6 changes: 5 additions & 1 deletion lib/ronin/cli/commands/new/web_server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ class New < Command
# An alias for `ronin-web new server`.
#
# @since 2.1.0
WebServer = Ronin::Web::CLI::Commands::New::Server
class WebServer < Ronin::Web::CLI::Commands::New::Server

command_name 'web-server'

end
end
end
end
Expand Down
6 changes: 5 additions & 1 deletion lib/ronin/cli/commands/new/web_spider.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ class New < Command
# An alias for `ronin-web new spider`.
#
# @since 2.1.0
WebSpider = Ronin::Web::CLI::Commands::New::Spider
class WebSpider < Ronin::Web::CLI::Commands::New::Spider

command_name 'web-spider'

end
end
end
end
Expand Down
2 changes: 2 additions & 0 deletions lib/ronin/cli/commands/public_suffix_list.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ class PublicSuffixList < Command
include CommandKit::Options::Verbose
include Core::CLI::Logging

command_name 'public-suffix-list'

option :update, short: '-u',
desc: 'Updates the public suffix list file'

Expand Down
2 changes: 2 additions & 0 deletions lib/ronin/cli/commands/tld_list.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ class TldList < Command
include CommandKit::Options::Verbose
include Core::CLI::Logging

command_name 'tld-list'

option :update, short: '-u',
desc: 'Updates the TLD list file'

Expand Down
Loading

0 comments on commit 83f6e1f

Please sign in to comment.