SYMBOL INDEX (1092 symbols across 82 files) FILE: build.rs function main (line 8) | fn main() { FILE: src/banner/container.rs constant UPDATE_URL (line 16) | pub const UPDATE_URL: &str = "https://api.github.com/repos/epi052/feroxb... type UpdateStatus (line 20) | pub(super) enum UpdateStatus { type Banner (line 32) | pub struct Banner { method new (line 202) | pub fn new(tgts: &[String], config: &Configuration) -> Self { method header (line 519) | fn header(&self) -> String { method footer (line 536) | fn footer(&self) -> String { method check_for_updates (line 553) | pub async fn check_for_updates(&mut self, url: &str, handles: Arc(&self, mut writer: W, config: Arc) -... FILE: src/banner/entry.rs constant INDENT (line 5) | const INDENT: usize = 3; constant COL_WIDTH (line 8) | const COL_WIDTH: usize = 22; type BannerEntry (line 12) | pub(super) struct BannerEntry { method new (line 26) | pub fn new(emoji: &str, title: &str, value: &str) -> Self { method format_emoji (line 35) | fn format_emoji(&self) -> String { method fmt (line 46) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { FILE: src/banner/tests.rs function banner_intialize_without_targets (line 10) | async fn banner_intialize_without_targets() { function banner_intialize_without_status_codes (line 18) | async fn banner_intialize_without_status_codes() { function banner_intialize_without_config_file (line 30) | async fn banner_intialize_without_config_file() { function banner_intialize_without_queries (line 42) | async fn banner_intialize_without_queries() { function banner_needs_update_returns_unknown_with_bad_url (line 54) | async fn banner_needs_update_returns_unknown_with_bad_url() { function banner_needs_update_returns_up_to_date (line 69) | async fn banner_needs_update_returns_up_to_date() { function banner_needs_update_returns_out_of_date (line 91) | async fn banner_needs_update_returns_out_of_date() { function banner_needs_update_returns_unknown_on_timeout (line 114) | async fn banner_needs_update_returns_unknown_on_timeout() { function banner_needs_update_returns_unknown_on_bad_json_response (line 136) | async fn banner_needs_update_returns_unknown_on_bad_json_response() { function banner_needs_update_returns_unknown_on_json_without_correct_tag (line 156) | async fn banner_needs_update_returns_unknown_on_json_without_correct_tag... FILE: src/client.rs type ClientConfig (line 12) | pub struct ClientConfig<'a, I> function create_redirect_policy (line 40) | fn create_redirect_policy(config: &ClientConfig<'_, I>) -> Policy function initialize (line 72) | pub fn initialize(config: ClientConfig<'_, I>) -> Result function client_with_bad_proxy (line 139) | fn client_with_bad_proxy() { function client_with_good_proxy (line 158) | fn client_with_good_proxy() { function client_with_valid_server_pem (line 178) | fn client_with_valid_server_pem() { function client_with_valid_server_der (line 198) | fn client_with_valid_server_der() { function client_with_valid_server_pem_and_der (line 218) | fn client_with_valid_server_pem_and_der() { function client_with_invalid_server_cert (line 245) | fn client_with_invalid_server_cert() { function initialize_with_scope_creates_client (line 265) | fn initialize_with_scope_creates_client() { function initialize_with_scope_empty_scope (line 291) | fn initialize_with_scope_empty_scope() { FILE: src/config/container.rs type Configuration (line 91) | pub struct Configuration { method new (line 556) | pub fn new() -> Result { method parse_config_files (line 631) | fn parse_config_files(config: &mut Self) -> Result<()> { method parse_cli_args (line 674) | fn parse_cli_args(args: &ArgMatches) -> Self { method try_rebuild_clients (line 1223) | fn try_rebuild_clients(configuration: &mut Configuration) { method parse_and_merge_config (line 1296) | fn parse_and_merge_config(config_file: PathBuf, config: &mut Self) -> ... method merge_config (line 1312) | fn merge_config(conf: &mut Self, new: Self) { method parse_config (line 1439) | pub(super) fn parse_config(config_file: PathBuf) -> Result { method parse_data_arg (line 1459) | fn parse_data_arg(&mut self, arg: &str, content_type: Option Self { method as_str (line 1491) | fn as_str(&self) -> String { method as_json (line 1519) | fn as_json(&self) -> Result { FILE: src/config/tests.rs function setup_config_test (line 10) | fn setup_config_test() -> Configuration { function default_configuration (line 79) | fn default_configuration() { function config_reads_wordlist (line 146) | fn config_reads_wordlist() { function config_reads_debug_log (line 153) | fn config_reads_debug_log() { function config_reads_status_codes (line 160) | fn config_reads_status_codes() { function config_reads_replay_codes (line 167) | fn config_reads_replay_codes() { function config_reads_threads (line 174) | fn config_reads_threads() { function config_reads_depth (line 181) | fn config_reads_depth() { function config_reads_scan_limit (line 188) | fn config_reads_scan_limit() { function config_reads_parallel (line 195) | fn config_reads_parallel() { function config_reads_rate_limit (line 202) | fn config_reads_rate_limit() { function config_reads_timeout (line 209) | fn config_reads_timeout() { function config_reads_proxy (line 216) | fn config_reads_proxy() { function config_reads_replay_proxy (line 223) | fn config_reads_replay_proxy() { function config_reads_silent (line 230) | fn config_reads_silent() { function config_reads_force_recursion (line 237) | fn config_reads_force_recursion() { function config_reads_quiet (line 244) | fn config_reads_quiet() { function config_reads_json (line 251) | fn config_reads_json() { function config_reads_auto_bail (line 258) | fn config_reads_auto_bail() { function config_reads_auto_tune (line 265) | fn config_reads_auto_tune() { function config_reads_verbosity (line 272) | fn config_reads_verbosity() { function config_reads_limit_bars (line 279) | fn config_reads_limit_bars() { function config_reads_output (line 286) | fn config_reads_output() { function config_reads_redirects (line 293) | fn config_reads_redirects() { function config_reads_insecure (line 300) | fn config_reads_insecure() { function config_reads_no_recursion (line 307) | fn config_reads_no_recursion() { function config_reads_stdin (line 314) | fn config_reads_stdin() { function config_reads_dont_filter (line 321) | fn config_reads_dont_filter() { function config_reads_add_slash (line 328) | fn config_reads_add_slash() { function config_reads_extract_links (line 335) | fn config_reads_extract_links() { function config_reads_collect_extensions (line 342) | fn config_reads_collect_extensions() { function config_reads_collect_backups (line 349) | fn config_reads_collect_backups() { function config_reads_collect_words (line 356) | fn config_reads_collect_words() { function config_reads_extensions (line 363) | fn config_reads_extensions() { function config_reads_dont_collect (line 370) | fn config_reads_dont_collect() { function config_reads_methods (line 377) | fn config_reads_methods() { function config_reads_data (line 384) | fn config_reads_data() { function config_reads_regex_denylist (line 391) | fn config_reads_regex_denylist() { function config_reads_url_denylist (line 401) | fn config_reads_url_denylist() { function config_reads_scope (line 414) | fn config_reads_scope() { function config_reads_filter_regex (line 427) | fn config_reads_filter_regex() { function config_reads_filter_similar (line 434) | fn config_reads_filter_similar() { function config_reads_filter_size (line 441) | fn config_reads_filter_size() { function config_reads_filter_word_count (line 448) | fn config_reads_filter_word_count() { function config_reads_filter_line_count (line 455) | fn config_reads_filter_line_count() { function config_reads_filter_status (line 462) | fn config_reads_filter_status() { function config_reads_save_state (line 469) | fn config_reads_save_state() { function config_reads_time_limit (line 476) | fn config_reads_time_limit() { function config_reads_scan_dir_listings (line 483) | fn config_reads_scan_dir_listings() { function config_reads_protocol (line 490) | fn config_reads_protocol() { function config_reads_request_file (line 497) | fn config_reads_request_file() { function config_reads_resume_from (line 504) | fn config_reads_resume_from() { function config_reads_server_certs (line 511) | fn config_reads_server_certs() { function config_reads_backup_extensions (line 521) | fn config_reads_backup_extensions() { function config_reads_client_cert (line 528) | fn config_reads_client_cert() { function config_reads_client_key (line 535) | fn config_reads_client_key() { function config_reads_headers (line 542) | fn config_reads_headers() { function config_reads_queries (line 552) | fn config_reads_queries() { function config_default_not_random_agent (line 562) | fn config_default_not_random_agent() { function config_report_and_exit_works (line 570) | fn config_report_and_exit_works() { function as_str_returns_string_with_newline (line 576) | fn as_str_returns_string_with_newline() { function as_json_returns_json_representation_of_configuration_with_newline (line 589) | fn as_json_returns_json_representation_of_configuration_with_newline() { function config_reads_unique (line 604) | fn config_reads_unique() { function config_reads_response_size_limit (line 611) | fn config_reads_response_size_limit() { FILE: src/config/utils.rs function report_and_exit (line 17) | pub(super) fn report_and_exit(err: &str) -> ! { function serialized_type (line 36) | pub(super) fn serialized_type() -> String { function timeout (line 41) | pub(super) fn timeout() -> u64 { function save_state (line 46) | pub(super) fn save_state() -> bool { function threads (line 51) | pub(super) fn threads() -> usize { function request_protocol (line 56) | pub(super) fn request_protocol() -> String { function status_codes (line 61) | pub(super) fn status_codes() -> Vec { function methods (line 73) | pub(super) fn methods() -> Vec { function ignored_extensions (line 78) | pub(super) fn ignored_extensions() -> Vec { function backup_extensions (line 86) | pub(super) fn backup_extensions() -> Vec { function wordlist (line 94) | pub(super) fn wordlist() -> String { function user_agent (line 99) | pub(super) fn user_agent() -> String { function depth (line 104) | pub(super) fn depth() -> usize { function extract_links (line 109) | pub(super) fn extract_links() -> bool { function response_size_limit (line 114) | pub(super) fn response_size_limit() -> usize { type OutputLevel (line 120) | pub enum OutputLevel { method default (line 137) | fn default() -> Self { function determine_output_level (line 143) | pub fn determine_output_level(quiet: bool, silent: bool, json: bool) -> ... type RequesterPolicy (line 166) | pub enum RequesterPolicy { method default (line 180) | fn default() -> Self { function determine_requester_policy (line 186) | pub fn determine_requester_policy(auto_tune: bool, auto_bail: bool) -> R... function split_query (line 219) | pub fn split_query(query: &str) -> Result<(String, String)> { function split_header (line 257) | pub fn split_header(header: &str) -> Result<(String, String)> { function combine_cookies (line 303) | pub fn combine_cookies(cookie1: &str, cookie2: &str) -> String { type ContentType (line 330) | pub enum ContentType { method to_header_value (line 339) | pub fn to_header_value(self: ContentType) -> String { function parse_request_file (line 383) | pub fn parse_request_file(config: &mut Configuration) -> Result<()> { function preconfig_log (line 575) | pub fn preconfig_log(level: LevelFilter, message: String) { type TempSetup (line 594) | struct TempSetup { method new (line 601) | pub fn new() -> Self { method cleanup (line 626) | pub fn cleanup(self) { function determine_output_level_returns_correct_results (line 633) | fn determine_output_level_returns_correct_results() { function determine_requester_policy_returns_correct_results (line 661) | fn determine_requester_policy_returns_correct_results() { function report_and_exit_panics_under_test (line 678) | fn report_and_exit_panics_under_test() { function test_split_query_simple (line 683) | fn test_split_query_simple() { function test_split_query_with_spaces (line 690) | fn test_split_query_with_spaces() { function test_split_query_empty_value (line 697) | fn test_split_query_empty_value() { function test_split_query_no_value (line 704) | fn test_split_query_no_value() { function test_split_query_multiple_equals (line 711) | fn test_split_query_multiple_equals() { function test_split_query_empty_key_and_value (line 718) | fn test_split_query_empty_key_and_value() { function test_split_query_empty_key (line 725) | fn test_split_query_empty_key() { function test_split_query_trailing_equals_in_value (line 732) | fn test_split_query_trailing_equals_in_value() { function test_split_query_no_equals (line 739) | fn test_split_query_no_equals() { function test_split_query_empty_input (line 746) | fn test_split_query_empty_input() { function test_split_header_simple (line 752) | fn test_split_header_simple() -> Result<()> { function test_split_header_with_leading_space_in_value (line 763) | fn test_split_header_with_leading_space_in_value() -> Result<()> { function test_split_header_with_trimmed_leading_space (line 774) | fn test_split_header_with_trimmed_leading_space() -> Result<()> { function test_split_header_with_multiple_colons (line 785) | fn test_split_header_with_multiple_colons() -> Result<()> { function test_split_header_empty_value (line 799) | fn test_split_header_empty_value() -> Result<()> { function test_split_header_no_value (line 807) | fn test_split_header_no_value() -> Result<()> { function test_split_header_no_colon (line 815) | fn test_split_header_no_colon() -> Result<()> { function test_split_header_empty_key (line 823) | fn test_split_header_empty_key() { function test_split_header_empty_key_and_value (line 834) | fn test_split_header_empty_key_and_value() { function test_split_header_empty_input (line 845) | fn test_split_header_empty_input() { function test_split_header_value_with_leading_single_space (line 853) | fn test_split_header_value_with_leading_single_space() -> Result<()> { function test_split_header_value_with_leading_multiple_spaces (line 864) | fn test_split_header_value_with_leading_multiple_spaces() -> Result<()> { function test_parse_raw_with_empty_request (line 875) | fn test_parse_raw_with_empty_request() { function test_parse_raw_with_empty_file (line 881) | fn test_parse_raw_with_empty_file() -> io::Result<()> { function test_parse_raw_without_head_body_crlf (line 897) | fn test_parse_raw_without_head_body_crlf() -> io::Result<()> { function test_parse_raw_with_only_head_body_crlf (line 915) | fn test_parse_raw_with_only_head_body_crlf() -> io::Result<()> { function test_parse_raw_body_is_overridden_by_cli (line 933) | fn test_parse_raw_body_is_overridden_by_cli() -> io::Result<()> { function test_parse_raw_with_empty_request_line (line 954) | fn test_parse_raw_with_empty_request_line() -> io::Result<()> { function test_parse_raw_with_missing_uri (line 972) | fn test_parse_raw_with_missing_uri() -> io::Result<()> { function test_parse_raw_with_missing_method (line 990) | fn test_parse_raw_with_missing_method() -> io::Result<()> { function test_parse_raw_methods_are_appended_if_unique (line 1008) | fn test_parse_raw_methods_are_appended_if_unique() -> io::Result<()> { function test_parse_raw_methods_are_ignored_if_already_present_from_cli (line 1026) | fn test_parse_raw_methods_are_ignored_if_already_present_from_cli() -> i... function test_parse_raw_headers_added_to_config_if_missing_else_overridden_from_cli (line 1044) | fn test_parse_raw_headers_added_to_config_if_missing_else_overridden_fro... function test_parse_raw_with_user_agent_in_request (line 1071) | fn test_parse_raw_with_user_agent_in_request() -> io::Result<()> { function test_parse_raw_with_user_agent_in_request_and_cli (line 1089) | fn test_parse_raw_with_user_agent_in_request_and_cli() -> io::Result<()> { function test_parse_raw_content_length_is_always_skipped (line 1109) | fn test_parse_raw_content_length_is_always_skipped() -> io::Result<()> { function test_parse_raw_cookie_header_appended_or_overridden (line 1127) | fn test_parse_raw_cookie_header_appended_or_overridden() -> io::Result<(... function test_parse_raw_with_relative_path_and_partial_host_header (line 1158) | fn test_parse_raw_with_relative_path_and_partial_host_header() -> io::Re... function test_parse_raw_with_relative_path_and_no_host_header (line 1173) | fn test_parse_raw_with_relative_path_and_no_host_header() -> io::Result<... function test_parse_raw_with_full_url_and_no_host_header (line 1191) | fn test_parse_raw_with_full_url_and_no_host_header() -> io::Result<()> { function test_parse_raw_with_full_url_and_host_header (line 1206) | fn test_parse_raw_with_full_url_and_host_header() -> io::Result<()> { function test_parse_raw_with_partial_url_and_queries (line 1224) | fn test_parse_raw_with_partial_url_and_queries() -> io::Result<()> { function test_parse_raw_with_full_url_and_queries (line 1256) | fn test_parse_raw_with_full_url_and_queries() -> io::Result<()> { function test_combine_cookies (line 1288) | fn test_combine_cookies() { function test_split_header (line 1299) | fn test_split_header() { function test_split_query (line 1329) | fn test_split_query() { FILE: src/event_handlers/command.rs type Command (line 17) | pub enum Command { FILE: src/event_handlers/container.rs type Tasks (line 16) | pub struct Tasks { method new (line 33) | pub fn new(terminal: Joiner, stats: Joiner, filters: Joiner, scans: Jo... type Handles (line 45) | pub struct Handles { method new (line 68) | pub fn new( method for_testing (line 87) | pub fn for_testing( method set_scan_handle (line 112) | pub fn set_scan_handle(&self, handle: ScanHandle) { method send_scan_command (line 121) | pub fn send_scan_command(&self, command: Command) -> Result<()> { method num_collected_extensions (line 133) | pub fn num_collected_extensions(&self) -> usize { method collected_extensions (line 143) | pub fn collected_extensions(&self) -> HashSet { method expected_num_requests_per_dir (line 154) | pub fn expected_num_requests_per_dir(&self) -> usize { method expected_num_requests_multiplier (line 162) | pub fn expected_num_requests_multiplier(&self) -> usize { method ferox_scans (line 174) | pub fn ferox_scans(&self) -> Result> { FILE: src/event_handlers/filters.rs type FiltersHandle (line 13) | pub struct FiltersHandle { method new (line 24) | pub fn new(data: Arc, tx: CommandSender) -> Self { method send (line 29) | pub fn send(&self, command: Command) -> Result<()> { method sync (line 35) | pub async fn sync(&self) -> Result<()> { type FiltersHandler (line 45) | pub struct FiltersHandler { method new (line 56) | pub fn new(data: Arc, receiver: UnboundedReceiver (Joiner, FiltersHandle) { method start (line 82) | pub async fn start(&mut self) -> Result<()> { function empty_filter_skipped (line 114) | async fn empty_filter_skipped() { FILE: src/event_handlers/inputs.rs type TermInputHandler (line 28) | pub struct TermInputHandler { method new (line 40) | pub fn new(handles: Arc) -> Self { method initialize (line 46) | pub fn initialize(handles: Arc) { method start (line 56) | fn start(&self) { method sigint_handler (line 78) | pub fn sigint_handler(handles: Arc) -> Result<()> { method enter_handler (line 147) | fn enter_handler() { FILE: src/event_handlers/outputs.rs type ProcessResponseCall (line 26) | enum ProcessResponseCall { type TermOutHandle (line 36) | pub struct TermOutHandle { method new (line 47) | pub fn new(tx: CommandSender, tx_file: CommandSender) -> Self { method send (line 52) | pub fn send(&self, command: Command) -> Result<()> { method sync (line 58) | pub async fn sync(&self, send_to_file: bool) -> Result<()> { type FileOutHandler (line 75) | pub struct FileOutHandler { method new (line 86) | fn new(rx: CommandReceiver, config: Arc) -> Self { method start (line 96) | async fn start(&mut self, tx_stats: CommandSender) -> Result<()> { type TermOutHandler (line 138) | pub struct TermOutHandler { method new (line 159) | fn new( method initialize (line 175) | pub fn initialize( method start (line 210) | async fn start(&mut self, tx_stats: CommandSender) -> Result<()> { method process_response (line 246) | fn process_response( method add_new_url_to_vec (line 395) | fn add_new_url_to_vec(&self, url: &Url, new_name: &str, urls: &mut Vec... method generate_backup_urls (line 414) | async fn generate_backup_urls(&self, response: &FeroxResponse) -> Vec<... function struct_fields_of_file_out_handler (line 457) | fn struct_fields_of_file_out_handler() { function struct_fields_of_term_out_handler (line 469) | async fn struct_fields_of_term_out_handler() { function generate_backup_urls_creates_correct_urls_when_extension_present (line 489) | async fn generate_backup_urls_creates_correct_urls_when_extension_presen... function generate_backup_urls_creates_correct_urls_when_extension_not_present (line 534) | async fn generate_backup_urls_creates_correct_urls_when_extension_not_pr... function generate_backup_urls_creates_correct_urls_when_not_at_root (line 579) | async fn generate_backup_urls_creates_correct_urls_when_not_at_root() { FILE: src/event_handlers/scans.rs type ScanHandle (line 25) | pub struct ScanHandle { method new (line 36) | pub fn new(data: Arc, tx: CommandSender) -> Self { method send (line 41) | pub fn send(&self, command: Command) -> Result<()> { type ScanHandler (line 49) | pub struct ScanHandler { method new (line 78) | pub fn new( method wordlist (line 111) | fn wordlist(&self, wordlist: Arc>) { method initialize (line 121) | pub fn initialize(handles: Arc) -> (Joiner, ScanHandle) { method start (line 146) | pub async fn start(&mut self) -> Result<()> { method update_all_bar_lengths (line 237) | fn update_all_bar_lengths(&self) -> Result<()> { method get_wordlist (line 315) | pub fn get_wordlist(&self, offset: usize) -> Result>> { method ordered_scan_url (line 330) | async fn ordered_scan_url(&mut self, targets: Vec, order: Scan... method try_recursion (line 409) | async fn try_recursion(&mut self, response: Box) -> Res... FILE: src/event_handlers/statistics.rs type StatsHandle (line 19) | pub struct StatsHandle { method new (line 30) | pub fn new(data: Arc, tx: CommandSender) -> Self { method send (line 35) | pub fn send(&self, command: Command) -> Result<()> { method sync (line 41) | pub async fn sync(&self) -> Result<()> { type StatsHandler (line 51) | pub struct StatsHandler { method new (line 65) | fn new(stats: Arc, rx_stats: UnboundedReceiver) -> Self { method start (line 79) | async fn start(&mut self, output_file: &str) -> Result<()> { method increment_bar (line 147) | fn increment_bar(&self) { method initialize (line 167) | pub fn initialize(config: Arc) -> (Joiner, StatsHandle) { FILE: src/extractor/builder.rs constant LINKFINDER_REGEX (line 11) | pub(super) const LINKFINDER_REGEX: &str = r#"(?x) constant ROBOTS_TXT_REGEX (line 53) | pub(super) const ROBOTS_TXT_REGEX: &str = constant URL_CHARS_REGEX (line 59) | pub(super) const URL_CHARS_REGEX: &str = r#"["<>\\^`{|} ]"#; type ExtractionTarget (line 63) | pub enum ExtractionTarget { type ExtractorBuilder (line 75) | pub struct ExtractorBuilder<'a> { method default (line 91) | fn default() -> Self { function handles (line 104) | pub fn handles(&mut self, handles: Arc) -> &mut Self { function url (line 110) | pub fn url(&mut self, url: &str) -> &mut Self { function target (line 116) | pub fn target(&mut self, target: ExtractionTarget) -> &mut Self { function response (line 122) | pub fn response(&mut self, response: &'a FeroxResponse) -> &mut Self { function build (line 130) | pub fn build(&self) -> Result> { FILE: src/extractor/container.rs function request_link (line 31) | pub(super) async fn request_link(url: &str, handles: Arc) -> Re... type RecursionStatus (line 69) | enum RecursionStatus { type Extractor (line 79) | pub struct Extractor<'a> { function extract (line 105) | pub async fn extract(&self) -> Result { function parse_url_and_add_subpaths (line 121) | fn parse_url_and_add_subpaths( function request_links (line 164) | pub async fn request_links( function extract_all_links_from_html_tags (line 315) | fn extract_all_links_from_html_tags( function extract_all_links_from_javascript (line 342) | fn extract_all_links_from_javascript( function add_all_sub_paths (line 373) | fn add_all_sub_paths(&self, url_path: &str, links: &mut HashSet)... function normalize_url_path (line 386) | pub(super) fn normalize_url_path(&self, path: &str) -> String { function get_sub_paths_from_path (line 432) | pub(super) fn get_sub_paths_from_path(&self, path: &str) -> Vec { function add_link_to_set_of_links (line 477) | pub(super) fn add_link_to_set_of_links( function extract_from_robots (line 522) | pub(super) async fn extract_from_robots(&self) -> Result Result { function extract_from_dir_listing (line 576) | pub async fn extract_from_dir_listing(&self) -> Result { function extract_links_by_attr (line 591) | fn extract_links_by_attr( function make_extract_request (line 627) | pub(super) async fn make_extract_request(&self, location: &str) -> Resul... function update_stats (line 712) | fn update_stats(&self, num_links: usize) -> Result<()> { FILE: src/extractor/tests.rs function get_test_response (line 32) | fn get_test_response() -> FeroxResponse { function setup_extractor (line 39) | fn setup_extractor(target: ExtractionTarget, scanned_urls: Arc Result<()> { function extractor_add_link_to_set_of_links_happy_path (line 175) | fn extractor_add_link_to_set_of_links_happy_path() { function extractor_add_link_to_set_of_links_with_non_base_url (line 201) | fn extractor_add_link_to_set_of_links_with_non_base_url() { function normalize_url_path_filters_queries_and_fragments (line 216) | fn normalize_url_path_filters_queries_and_fragments() { function extractor_get_links_with_absolute_url_that_differs_from_target_domain (line 246) | async fn extractor_get_links_with_absolute_url_that_differs_from_target_... function request_robots_txt_without_proxy (line 304) | async fn request_robots_txt_without_proxy() -> Result<()> { function request_robots_txt_with_proxy (line 335) | async fn request_robots_txt_with_proxy() -> Result<()> { function request_link_happy_path (line 367) | async fn request_link_happy_path() -> Result<()> { function request_link_bails_on_seen_url (line 388) | async fn request_link_bails_on_seen_url() -> Result<()> { FILE: src/filters/container.rs type FeroxFilters (line 18) | pub struct FeroxFilters { method push (line 26) | pub fn push(&self, filter: Box) -> Result<()> { method remove (line 42) | pub fn remove(&self, indices: &mut [usize]) { method should_filter_response (line 70) | pub fn should_filter_response( method serialize (line 94) | fn serialize(&self, serializer: S) -> Result FILE: src/filters/empty.rs type EmptyFilter (line 5) | pub struct EmptyFilter {} method should_filter_response (line 9) | fn should_filter_response(&self, _response: &FeroxResponse) -> bool { method box_eq (line 14) | fn box_eq(&self, other: &dyn Any) -> bool { method as_any (line 19) | fn as_any(&self) -> &dyn Any { FILE: src/filters/init.rs function initialize (line 11) | pub async fn initialize(handles: Arc) -> Result<()> { FILE: src/filters/lines.rs type LinesFilter (line 6) | pub struct LinesFilter { method should_filter_response (line 14) | fn should_filter_response(&self, response: &FeroxResponse) -> bool { method box_eq (line 25) | fn box_eq(&self, other: &dyn Any) -> bool { method as_any (line 30) | fn as_any(&self) -> &dyn Any { FILE: src/filters/regex.rs type RegexFilter (line 7) | pub struct RegexFilter { method default (line 17) | fn default() -> Self { method should_filter_response (line 29) | fn should_filter_response(&self, response: &FeroxResponse) -> bool { method box_eq (line 44) | fn box_eq(&self, other: &dyn Any) -> bool { method as_any (line 49) | fn as_any(&self) -> &dyn Any { method eq (line 57) | fn eq(&self, other: &RegexFilter) -> bool { FILE: src/filters/similarity.rs type SimilarityFilter (line 16) | pub struct SimilarityFilter { method new (line 29) | pub fn new(hash: u64, original_url: String, cutoff: usize) -> Self { method from (line 39) | fn from(response: &FeroxResponse) -> Self { method should_filter_response (line 52) | fn should_filter_response(&self, response: &FeroxResponse) -> bool { method box_eq (line 58) | fn box_eq(&self, other: &dyn Any) -> bool { method as_any (line 65) | fn as_any(&self) -> &dyn Any { FILE: src/filters/size.rs type SizeFilter (line 6) | pub struct SizeFilter { method should_filter_response (line 14) | fn should_filter_response(&self, response: &FeroxResponse) -> bool { method box_eq (line 25) | fn box_eq(&self, other: &dyn Any) -> bool { method as_any (line 30) | fn as_any(&self) -> &dyn Any { FILE: src/filters/status_code.rs type StatusCodeFilter (line 6) | pub struct StatusCodeFilter { method should_filter_response (line 14) | fn should_filter_response(&self, response: &FeroxResponse) -> bool { method box_eq (line 32) | fn box_eq(&self, other: &dyn Any) -> bool { method as_any (line 37) | fn as_any(&self) -> &dyn Any { FILE: src/filters/tests.rs function wildcard_filter_default (line 9) | fn wildcard_filter_default() { function wildcard_filter_as_any (line 21) | fn wildcard_filter_as_any() { function lines_filter_as_any (line 42) | fn lines_filter_as_any() { function words_filter_as_any (line 57) | fn words_filter_as_any() { function size_filter_as_any (line 72) | fn size_filter_as_any() { function status_code_filter_as_any (line 87) | fn status_code_filter_as_any() { function regex_filter_as_any (line 102) | fn regex_filter_as_any() { function wildcard_should_filter_when_static_wildcard_found (line 126) | fn wildcard_should_filter_when_static_wildcard_found() { function wildcard_should_filter_when_static_wildcard_len_is_zero (line 149) | fn wildcard_should_filter_when_static_wildcard_len_is_zero() { function wildcard_should_filter_when_dynamic_wildcard_found (line 169) | fn wildcard_should_filter_when_dynamic_wildcard_found() { function regexfilter_should_filter_when_regex_matches_on_response_body (line 188) | fn regexfilter_should_filter_when_regex_matches_on_response_body() { function similarity_filter_is_accurate (line 205) | fn similarity_filter_is_accurate() { function similarity_filter_as_any (line 235) | fn similarity_filter_as_any() { function remove_function_works_as_expected (line 258) | fn remove_function_works_as_expected() { FILE: src/filters/utils.rs function create_similarity_filter (line 19) | pub(crate) async fn create_similarity_filter( function filter_lookup (line 57) | pub(crate) fn filter_lookup(filter_type: &str, filter_value: &str) -> Op... function filter_lookup_returns_correct_filters (line 115) | fn filter_lookup_returns_correct_filters() { function create_similarity_filter_is_correct (line 166) | async fn create_similarity_filter_is_correct() { FILE: src/filters/wildcard.rs type WildcardFilter (line 9) | pub struct WildcardFilter { method new (line 32) | pub fn new(dont_filter: bool) -> Self { method fmt (line 157) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method default (line 42) | fn default() -> Self { method should_filter_response (line 58) | fn should_filter_response(&self, response: &FeroxResponse) -> bool { method box_eq (line 146) | fn box_eq(&self, other: &dyn Any) -> bool { method as_any (line 151) | fn as_any(&self) -> &dyn Any { FILE: src/filters/words.rs type WordsFilter (line 6) | pub struct WordsFilter { method should_filter_response (line 14) | fn should_filter_response(&self, response: &FeroxResponse) -> bool { method box_eq (line 25) | fn box_eq(&self, other: &dyn Any) -> bool { method as_any (line 30) | fn as_any(&self) -> &dyn Any { FILE: src/heuristics.rs type DirListingType (line 45) | pub enum DirListingType { type DirListingResult (line 66) | pub struct DirListingResult { type WildcardResult (line 77) | pub enum WildcardResult { type HeuristicTests (line 86) | pub struct HeuristicTests { method new (line 94) | pub fn new(handles: Arc) -> Self { method unique_string (line 103) | fn unique_string(&self, length: usize) -> String { method connectivity (line 122) | pub async fn connectivity(&self, target_urls: &[String]) -> Result Result Option bool { method has_directory_table_headers (line 351) | fn has_directory_table_headers(&self, html: &Html) -> bool { method has_sorting_query_params (line 418) | fn has_sorting_query_params(&self, html: &Html) -> bool { method has_high_link_density (line 449) | fn has_high_link_density(&self, html: &Html) -> bool { method detect_404_like_responses (line 494) | pub async fn detect_404_like_responses( method examine_404_like_responses (line 713) | fn examine_404_like_responses<'a>( function heuristics_unique_string_returns_correct_length (line 847) | fn heuristics_unique_string_returns_correct_length() { function detect_directory_listing_finds_tomcat_python (line 857) | fn detect_directory_listing_finds_tomcat_python() { function detect_directory_listing_finds_apache (line 871) | fn detect_directory_listing_finds_apache() { function detect_directory_listing_finds_asp_dot_net (line 882) | fn detect_directory_listing_finds_asp_dot_net() { function detect_directory_listing_returns_none_as_default (line 893) | fn detect_directory_listing_returns_none_as_default() { function has_parent_directory_link_detects_by_href (line 904) | fn has_parent_directory_link_detects_by_href() { function has_parent_directory_link_detects_by_text (line 918) | fn has_parent_directory_link_detects_by_text() { function has_parent_directory_link_returns_false_when_absent (line 932) | fn has_parent_directory_link_returns_false_when_absent() { function has_directory_table_headers_detects_name_and_size (line 942) | fn has_directory_table_headers_detects_name_and_size() { function has_directory_table_headers_detects_name_and_date (line 952) | fn has_directory_table_headers_detects_name_and_date() { function has_directory_table_headers_requires_two_categories (line 962) | fn has_directory_table_headers_requires_two_categories() { function has_sorting_query_params_detects_apache_style (line 972) | fn has_sorting_query_params_detects_apache_style() { function has_sorting_query_params_returns_false_when_absent (line 982) | fn has_sorting_query_params_returns_false_when_absent() { function has_high_link_density_detects_files_and_dirs (line 992) | fn has_high_link_density_detects_files_and_dirs() { function has_high_link_density_requires_minimum_links (line 1006) | fn has_high_link_density_requires_minimum_links() { function has_high_link_density_ignores_parent_links (line 1019) | fn has_high_link_density_ignores_parent_links() { function detect_directory_listing_detects_custom_with_multiple_signals (line 1033) | fn detect_directory_listing_detects_custom_with_multiple_signals() { function detect_directory_listing_requires_two_signals (line 1055) | fn detect_directory_listing_requires_two_signals() { function detect_directory_listing_detects_rootme_sample (line 1067) | fn detect_directory_listing_detects_rootme_sample() { function detect_directory_listing_ignores_generic_pages (line 1092) | fn detect_directory_listing_ignores_generic_pages() { FILE: src/lib.rs type CommandSender (line 36) | pub(crate) type CommandSender = UnboundedSender; type CommandReceiver (line 39) | pub(crate) type CommandReceiver = UnboundedReceiver; type Joiner (line 42) | pub(crate) type Joiner = JoinHandle>; type FeroxChannel (line 45) | pub(crate) type FeroxChannel = (UnboundedSender, UnboundedReceiver... type ExtractionResult (line 48) | pub(crate) type ExtractionResult = HashSet; constant VERSION (line 51) | pub(crate) const VERSION: &str = env!("CARGO_PKG_VERSION"); constant DEFAULT_OPEN_FILE_LIMIT (line 54) | pub const DEFAULT_OPEN_FILE_LIMIT: u64 = 8192; constant DEFAULT_IGNORED_EXTENSIONS (line 57) | pub(crate) const DEFAULT_IGNORED_EXTENSIONS: [&str; 43] = [ constant DEFAULT_BACKUP_EXTENSIONS (line 65) | pub(crate) const DEFAULT_BACKUP_EXTENSIONS: [&str; 5] = ["~", ".bak", ".... constant COMMON_FILE_EXTENSIONS (line 69) | pub(crate) const COMMON_FILE_EXTENSIONS: [&str; 154] = [ constant DEFAULT_WORDLIST (line 245) | pub const DEFAULT_WORDLIST: &str = constant DEFAULT_WORDLIST (line 248) | pub const DEFAULT_WORDLIST: &str = constant SECONDARY_WORDLIST (line 250) | pub const SECONDARY_WORDLIST: &str = constant SLEEP_DURATION (line 254) | pub(crate) const SLEEP_DURATION: u64 = 500; constant HIGH_ERROR_RATIO (line 257) | pub const HIGH_ERROR_RATIO: f64 = 0.90; constant DEFAULT_STATUS_CODES (line 260) | pub const DEFAULT_STATUS_CODES: [StatusCode; 60] = [ constant DEFAULT_METHOD (line 329) | pub(crate) const DEFAULT_METHOD: &str = "GET"; constant DEFAULT_CONFIG_NAME (line 334) | pub const DEFAULT_CONFIG_NAME: &str = "ferox-config.toml"; constant USER_AGENTS (line 336) | pub const USER_AGENTS: [&str; 12] = [ constant NEAR_DUPLICATE_DISTANCE (line 355) | pub(crate) const NEAR_DUPLICATE_DISTANCE: usize = 3; constant UNIQUE_DISTANCE (line 358) | pub(crate) const UNIQUE_DISTANCE: usize = 1; function default_config_name (line 366) | fn default_config_name() { function default_wordlist (line 372) | fn default_wordlist() { function default_version (line 381) | fn default_version() { FILE: src/logger.rs function initialize (line 21) | pub fn initialize(config: Arc) -> Result<()> { FILE: src/main.rs function get_unique_words_from_wordlist (line 52) | fn get_unique_words_from_wordlist(path: &str) -> Result>> { function scan (line 93) | async fn scan(targets: Vec, handles: Arc) -> Result<()> { function get_targets (line 143) | async fn get_targets(handles: Arc) -> Result> { function wrapped_main (line 219) | async fn wrapped_main(config: Arc) -> Result<()> { function clean_up (line 588) | async fn clean_up(handles: Arc, tasks: Tasks) -> Result<()> { function update_app (line 621) | async fn update_app() -> Result Result<()> { FILE: src/message.rs type FeroxMessage (line 10) | pub struct FeroxMessage { method as_str (line 33) | fn as_str(&self) -> String { method as_json (line 64) | fn as_json(&self) -> anyhow::Result { function ferox_message_as_str_returns_string_with_newline (line 82) | fn ferox_message_as_str_returns_string_with_newline() { function ferox_message_as_json_returns_json_representation_of_ferox_message_with_newline (line 101) | fn ferox_message_as_json_returns_json_representation_of_ferox_message_wi... function message_defaults (line 124) | fn message_defaults() { function message_as_str_edges (line 135) | fn message_as_str_edges() { FILE: src/nlp/document.rs type Document (line 8) | pub(crate) struct Document { method new (line 18) | pub(super) fn new(text: &str) -> Self { method add_term (line 34) | fn add_term(&mut self, word: &str) { method from_html (line 42) | pub(crate) fn from_html(raw_html: &str) -> Option { method term_frequency (line 100) | pub(super) fn term_frequency(&self, term: &Term) -> f32 { method terms (line 109) | pub(super) fn terms(&self) -> &HashMap { method number_of_terms (line 114) | fn number_of_terms(&self) -> usize { function nlp_document_creation_from_text (line 125) | fn nlp_document_creation_from_text() { function nlp_document_creation_from_html (line 146) | fn nlp_document_creation_from_html() { function term_frequency_validation (line 180) | fn term_frequency_validation() { function document_accessor_test (line 194) | fn document_accessor_test() { function document_creation_skips_script_and_style_tags (line 209) | fn document_creation_skips_script_and_style_tags() { FILE: src/nlp/model.rs type TfIdf (line 9) | pub(crate) struct TfIdf { method new (line 19) | pub(crate) fn new() -> Self { method terms (line 24) | fn terms(&self) -> &HashMap { method num_documents (line 29) | pub(crate) fn num_documents(&self) -> usize { method add_document (line 34) | pub(crate) fn add_document(&mut self, document: Document) { method calculate_tf_idf_scores (line 60) | pub(crate) fn calculate_tf_idf_scores(&mut self) { method all_words (line 87) | pub(crate) fn all_words(&self) -> Vec { function get_score (line 101) | fn get_score(word: &str, model: &TfIdf) -> f32 { function model_generates_expected_tf_idf_scores (line 108) | fn model_generates_expected_tf_idf_scores() { function select_n_words_grabs_correct_words (line 144) | fn select_n_words_grabs_correct_words() { FILE: src/nlp/term.rs type Term (line 5) | pub(crate) struct Term { method new (line 12) | pub(super) fn new(word: &str) -> Self { method raw (line 19) | pub(super) fn raw(&self) -> &str { type TermMetaData (line 35) | pub(super) struct TermMetaData { method document_frequency (line 48) | pub(super) fn document_frequency(&self) -> usize { method term_frequencies_mut (line 53) | pub(super) fn term_frequencies_mut(&mut self) -> &mut Vec { method term_frequencies (line 58) | pub(super) fn term_frequencies(&self) -> &[f32] { method count_mut (line 63) | pub(super) fn count_mut(&mut self) -> &mut u32 { method count (line 68) | pub(super) fn count(&self) -> u32 { method tf_idf_score_mut (line 73) | pub(super) fn tf_idf_score_mut(&mut self) -> &mut f32 { method tf_idf_score (line 78) | pub(super) fn tf_idf_score(&self) -> f32 { function nlp_term_accessor_test (line 89) | fn nlp_term_accessor_test() { function nlp_term_metadata_accessor_test (line 96) | fn nlp_term_metadata_accessor_test() { FILE: src/nlp/utils.rs function preprocess (line 7) | pub(crate) fn preprocess(text: &str) -> Vec { function normalize_case (line 18) | fn normalize_case<'a, S: Into>>(input: S) -> Cow<'a, str> { function remove_punctuation (line 42) | fn remove_punctuation(text: &str) -> String { function remove_stop_words (line 54) | fn remove_stop_words(text: &str) -> String { function inverse_document_frequency (line 68) | pub(super) fn inverse_document_frequency(num_docs: f32, doc_frequency: f... function tf_idf_score (line 73) | pub(super) fn tf_idf_score(term_frequency: f32, idf: f32) -> f32 { function test_remove_punctuation (line 83) | fn test_remove_punctuation() { function test_normalize_case (line 94) | fn test_normalize_case() { function test_remove_stopwords (line 101) | fn test_remove_stopwords() { function test_preprocess_results (line 116) | fn test_preprocess_results() { function idf_returns_expected_value (line 131) | fn idf_returns_expected_value() { function tf_idf_returns_expected_value (line 149) | fn tf_idf_returns_expected_value() { FILE: src/parser.rs function initialize (line 29) | pub fn initialize() -> Command { function valid_time_spec (line 767) | fn valid_time_spec(time_spec: &str) -> Result { constant EPILOGUE (line 779) | const EPILOGUE: &str = r#"NOTE: function parser_initialize_gives_defaults (line 831) | fn parser_initialize_gives_defaults() { function validate_valid_time_spec_validation (line 841) | fn validate_valid_time_spec_validation() { FILE: src/progress.rs type BarType (line 14) | pub enum BarType { function add_bar (line 33) | pub fn add_bar(prefix: &str, length: u64, bar_type: BarType) -> Progress... function update_style (line 42) | pub fn update_style(bar: &ProgressBar, bar_type: BarType) { function add_bar_with_all_configurations (line 87) | fn add_bar_with_all_configurations() { FILE: src/response.rs type FeroxResponse (line 30) | pub struct FeroxResponse { method fmt (line 100) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { method status (line 115) | pub fn status(&self) -> &StatusCode { method method (line 120) | pub fn method(&self) -> &Method { method wildcard (line 125) | pub fn wildcard(&self) -> bool { method url (line 130) | pub fn url(&self) -> &Url { method text (line 135) | pub fn text(&self) -> &str { method headers (line 140) | pub fn headers(&self) -> &HeaderMap { method content_length (line 145) | pub fn content_length(&self) -> u64 { method timestamp (line 150) | pub fn timestamp(&self) -> f64 { method truncated (line 155) | pub fn truncated(&self) -> bool { method set_url (line 160) | pub fn set_url(&mut self, url: &str) { method set_wildcard (line 172) | pub fn set_wildcard(&mut self, is_wildcard: bool) { method set_text (line 178) | pub fn set_text(&mut self, text: &str) { method drop_text (line 190) | pub fn drop_text(&mut self) { method line_count (line 196) | pub fn line_count(&self) -> usize { method word_count (line 201) | pub fn word_count(&self) -> usize { method from (line 206) | pub async fn from( method parse_extension (line 309) | pub(crate) fn parse_extension(&mut self, handles: Arc) -> Res... method reached_max_depth (line 367) | pub(crate) fn reached_max_depth( method is_directory (line 395) | pub fn is_directory(&self) -> bool { method send_report (line 442) | pub fn send_report(self, report_sender: CommandSender) -> Result<()> { method deserialize (line 648) | fn deserialize(deserializer: D) -> anyhow::Result method default (line 77) | fn default() -> Self { method as_str (line 462) | fn as_str(&self) -> String { method as_json (line 598) | fn as_json(&self) -> anyhow::Result { method serialize (line 609) | fn serialize(&self, serializer: S) -> anyhow::Result function reached_max_depth_returns_early_on_zero (line 766) | fn reached_max_depth_returns_early_on_zero() { function reached_max_depth_current_depth_equals_max (line 779) | fn reached_max_depth_current_depth_equals_max() { function reached_max_depth_current_depth_less_than_max (line 794) | fn reached_max_depth_current_depth_less_than_max() { function reached_max_depth_base_depth_equals_max_depth (line 808) | fn reached_max_depth_base_depth_equals_max_depth() { function reached_max_depth_current_greater_than_max (line 822) | fn reached_max_depth_current_greater_than_max() { function parse_extension_finds_simple_extension (line 836) | fn parse_extension_finds_simple_extension() { function parse_extension_ignores_hidden_files (line 858) | fn parse_extension_ignores_hidden_files() { function parse_extension_early_returns_based_on_config (line 880) | fn parse_extension_early_returns_based_on_config() { function truncated_getter_returns_correct_value (line 897) | fn truncated_getter_returns_correct_value() { function truncated_response_shows_in_url_display (line 910) | fn truncated_response_shows_in_url_display() { FILE: src/scan_manager/menu.rs type MenuCmd (line 14) | pub enum MenuCmd { type MenuCmdResult (line 33) | pub enum MenuCmdResult { type Menu (line 52) | pub(super) struct Menu { method new (line 72) | pub(super) fn new() -> Self { method print_header (line 156) | pub(super) fn print_header(&self) { method print_border (line 161) | pub(super) fn print_border(&self) { method print_footer (line 166) | pub(super) fn print_footer(&self) { method print_eta (line 171) | pub(super) fn print_eta(&self, eta: Duration) { method print_scan_limit (line 178) | pub(super) fn print_scan_limit(&self, limiter: Arc) { method hide_progress_bars (line 189) | pub(super) fn hide_progress_bars(&self) { method show_progress_bars (line 194) | pub(super) fn show_progress_bars(&self) { method clear_screen (line 199) | pub(super) fn clear_screen(&self) { method println (line 205) | pub(super) fn println(&self, msg: &str) { method str_to_usize (line 210) | fn str_to_usize(&self, value: &str) -> usize { method split_to_nums (line 226) | pub(super) fn split_to_nums(&self, line: &str) -> Vec { method get_command_input_from_user (line 273) | pub(super) fn get_command_input_from_user(&self, line: &str) -> Option... method confirm_cancellation (line 357) | pub(super) fn confirm_cancellation(&self, url: &str) -> char { method default (line 369) | fn default() -> Menu { FILE: src/scan_manager/order.rs type ScanOrder (line 4) | pub enum ScanOrder { FILE: src/scan_manager/response_container.rs type FeroxResponses (line 7) | pub struct FeroxResponses { method insert (line 38) | pub fn insert(&self, response: FeroxResponse) { method contains (line 45) | pub fn contains(&self, other: &FeroxResponse) -> bool { method serialize (line 15) | fn serialize(&self, serializer: S) -> Result function create_response_json (line 62) | fn create_response_json( function contains_method_works_correctly (line 76) | fn contains_method_works_correctly() { FILE: src/scan_manager/scan.rs type Visibility (line 27) | pub enum Visibility { type FeroxScan (line 41) | pub struct FeroxScan { method visible (line 129) | pub fn visible(&self) -> bool { method swap_visibility (line 133) | pub fn swap_visibility(&self) { method abort (line 168) | pub async fn abort(&self, active_bars: usize) -> Result<()> { method url (line 189) | pub fn url(&self) -> &str { method requests_made_so_far (line 194) | pub fn requests_made_so_far(&self) -> u64 { method set_task (line 199) | pub async fn set_task(&self, task: JoinHandle<()>) -> Result<()> { method set_status (line 206) | pub fn set_status(&self, status: ScanStatus) -> Result<()> { method set_start_time (line 214) | pub fn set_start_time(&self, start_time: Instant) -> Result<()> { method stop_progress_bar (line 222) | pub(super) fn stop_progress_bar(&self, active_bars: usize) { method progress_bar (line 248) | pub fn progress_bar(&self) -> ProgressBar { method new (line 301) | pub fn new( method finish (line 326) | pub fn finish(&self, active_bars: usize) -> Result<()> { method is_active (line 334) | pub fn is_active(&self) -> bool { method is_complete (line 346) | pub fn is_complete(&self) -> bool { method is_cancelled (line 354) | pub fn is_cancelled(&self) -> bool { method is_running (line 362) | pub fn is_running(&self) -> bool { method is_not_started (line 370) | pub fn is_not_started(&self) -> bool { method join (line 378) | pub async fn join(&self) { method add_403 (line 393) | pub(crate) fn add_403(&self) { method add_429 (line 398) | pub(crate) fn add_429(&self) { method add_error (line 403) | pub(crate) fn add_error(&self) { method num_errors (line 408) | pub fn num_errors(&self, trigger: PolicyTrigger) -> usize { method errors (line 418) | fn errors(&self) -> usize { method status_403s (line 423) | fn status_403s(&self) -> usize { method status_429s (line 428) | fn status_429s(&self) -> usize { method requests_per_second (line 433) | pub fn requests_per_second(&self) -> u64 { method requests (line 460) | pub fn requests(&self) -> u64 { method fmt (line 467) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { method deserialize (line 515) | fn deserialize(deserializer: D) -> Result method default (line 101) | fn default() -> Self { method eq (line 486) | fn eq(&self, other: &Self) -> bool { method serialize (line 494) | fn serialize(&self, serializer: S) -> Result type ScanType (line 580) | pub enum ScanType { method default (line 591) | fn default() -> Self { type ScanStatus (line 598) | pub enum ScanStatus { method default (line 618) | fn default() -> Self { function num_errors_returns_correct_values (line 633) | fn num_errors_returns_correct_values() { function requests_per_second_returns_correct_values (line 659) | fn requests_per_second_returns_correct_values() { function test_swap_visibility (line 700) | fn test_swap_visibility() { function test_is_running (line 729) | fn test_is_running() { FILE: src/scan_manager/scan_container.rs type FeroxScans (line 50) | pub struct FeroxScans { method new (line 101) | pub fn new(output_level: OutputLevel, bar_limit: usize) -> Self { method insert (line 112) | pub fn insert(&self, scan: Arc) -> bool { method add_serialized_scans (line 136) | pub fn add_serialized_scans(&self, filename: &str, handles: Arc bool { method get_scan_by_url (line 245) | pub fn get_scan_by_url(&self, url: &str) -> Option> { method get_base_scan_by_url (line 258) | pub fn get_base_scan_by_url(&self, url: &str) -> Option> { method increment_status_code (line 294) | pub fn increment_status_code(&self, url: &str, code: StatusCode) { method increment_error (line 309) | pub fn increment_error(&self, url: &str) { method display_scans (line 321) | pub async fn display_scans(&self) { method cancel_scans (line 361) | async fn cancel_scans(&self, indexes: Vec, force: bool) -> usize { method display_filters (line 415) | fn display_filters(&self, handles: Arc) { method interactive_menu (line 437) | async fn interactive_menu( method print_known_responses (line 542) | pub fn print_known_responses(&self) { method print_completed_bars (line 557) | pub fn print_completed_bars(&self, bar_length: usize) -> Result<()> { method pause (line 594) | pub async fn pause( method set_bar_length (line 635) | pub fn set_bar_length(&self, bar_length: u64) { method add_scan (line 646) | pub(super) fn add_scan( method add_directory_scan (line 698) | pub fn add_directory_scan( method add_file_scan (line 713) | pub fn add_file_scan( method number_of_bars (line 723) | pub fn number_of_bars(&self) -> usize { method make_visible (line 742) | pub fn make_visible(&self) { method has_active_scans (line 775) | pub fn has_active_scans(&self) -> bool { method get_active_scans (line 787) | pub fn get_active_scans(&self) -> Vec> { method add_discovered_extension (line 803) | pub fn add_discovered_extension(&self, extension: String) -> bool { method serialize (line 76) | fn serialize(&self, serializer: S) -> Result function unknown_extension_is_added_to_collected_extensions (line 835) | fn unknown_extension_is_added_to_collected_extensions() { function known_extension_is_added_to_collected_extensions (line 848) | fn known_extension_is_added_to_collected_extensions() { FILE: src/scan_manager/state.rs type FeroxState (line 11) | pub struct FeroxState { method new (line 34) | pub fn new( method as_str (line 60) | fn as_str(&self) -> String { method as_json (line 65) | fn as_json(&self) -> Result { FILE: src/scan_manager/tests.rs function default_scantype_is_file (line 27) | fn default_scantype_is_file() { function scanner_pause_scan_with_finished_spinner (line 38) | async fn scanner_pause_scan_with_finished_spinner() { function add_url_to_list_of_scanned_urls_with_unknown_url (line 60) | fn add_url_to_list_of_scanned_urls_with_unknown_url() { function add_url_to_list_of_scanned_urls_with_known_url (line 74) | fn add_url_to_list_of_scanned_urls_with_known_url() { function stop_progress_bar_stops_bar (line 104) | fn stop_progress_bar_stops_bar() { function add_url_to_list_of_scanned_urls_with_known_url_without_slash (line 140) | fn add_url_to_list_of_scanned_urls_with_known_url_without_slash() { function call_display_scans (line 169) | async fn call_display_scans() { function partial_eq_compares_the_id_field (line 212) | fn partial_eq_compares_the_id_field() { function ferox_scan_get_progress_bar_when_none_is_set (line 245) | fn ferox_scan_get_progress_bar_when_none_is_set() { function ferox_scan_deserialize (line 259) | fn ferox_scan_deserialize() { function ferox_scan_serialize (line 307) | fn ferox_scan_serialize() { function ferox_scans_serialize (line 327) | fn ferox_scans_serialize() { function ferox_responses_serialize (line 352) | fn ferox_responses_serialize() { function ferox_response_serialize_and_deserialize (line 369) | fn ferox_response_serialize_and_deserialize() { function feroxstates_feroxserialize_implementation (line 392) | fn feroxstates_feroxserialize_implementation() { function start_max_time_thread_panics_after_delay (line 572) | async fn start_max_time_thread_panics_after_delay() { function start_max_time_thread_returns_immediately_with_too_large_input (line 591) | async fn start_max_time_thread_returns_immediately_with_too_large_input() { function feroxscan_display (line 609) | fn feroxscan_display() { function ferox_scan_abort (line 657) | async fn ferox_scan_abort() { function menu_print_header_and_footer (line 693) | fn menu_print_header_and_footer() { function menu_get_command_input_from_user_returns_cancel (line 709) | fn menu_get_command_input_from_user_returns_cancel() { function menu_get_command_input_from_user_returns_add (line 734) | fn menu_get_command_input_from_user_returns_add() { function split_to_nums_is_correct (line 756) | fn split_to_nums_is_correct() { function get_base_scan_by_url_finds_correct_scan (line 770) | fn get_base_scan_by_url_finds_correct_scan() { function get_base_scan_by_url_finds_correct_scan_without_trailing_slash (line 820) | fn get_base_scan_by_url_finds_correct_scan_without_trailing_slash() { function get_base_scan_by_url_finds_correct_scan_with_trailing_slash (line 839) | fn get_base_scan_by_url_finds_correct_scan_with_trailing_slash() { FILE: src/scan_manager/utils.rs function start_max_time_thread (line 19) | pub async fn start_max_time_thread(handles: Arc) { function resume_scan (line 62) | pub fn resume_scan(filename: &str) -> Configuration { function determine_bar_type (line 102) | pub fn determine_bar_type( function test_no_limit_visible (line 133) | fn test_no_limit_visible() { function test_limit_exceeded_hidden (line 139) | fn test_limit_exceeded_hidden() { function test_limit_not_exceeded_visible (line 145) | fn test_limit_not_exceeded_visible() { function test_quiet_visible (line 151) | fn test_quiet_visible() { function test_quiet_hidden (line 157) | fn test_quiet_hidden() { function test_silent_hidden (line 163) | fn test_silent_hidden() { function test_silent_json_hidden (line 169) | fn test_silent_json_hidden() { FILE: src/scanner/ferox_scanner.rs function check_for_user_input (line 42) | async fn check_for_user_input( type FeroxScanner (line 117) | pub struct FeroxScanner { method new (line 138) | pub fn new( method stream_requests (line 155) | async fn stream_requests( method scan_url (line 217) | pub async fn scan_url(&self) -> Result<()> { FILE: src/scanner/init.rs function initialize (line 10) | pub async fn initialize(num_words: usize, handles: Arc) -> Resu... FILE: src/scanner/limit_heap.rs type LimitHeap (line 14) | pub(super) struct LimitHeap { method move_right (line 52) | pub(super) fn move_right(&mut self) -> usize { method move_left (line 73) | pub(super) fn move_left(&mut self) -> usize { method move_up (line 94) | pub(super) fn move_up(&mut self) -> usize { method move_to (line 104) | pub(super) fn move_to(&mut self, index: usize) { method value (line 117) | pub(super) fn value(&self) -> i32 { method set_value (line 131) | pub(super) fn set_value(&mut self, value: i32) { method has_parent (line 144) | pub(super) fn has_parent(&self) -> bool { method parent_value (line 149) | pub(super) fn parent_value(&mut self) -> i32 { method has_children (line 160) | pub(super) fn has_children(&self) -> bool { method right_child_value (line 166) | fn right_child_value(&mut self) -> i32 { method set_left_child (line 174) | fn set_left_child(&mut self) { method set_right_child (line 185) | fn set_right_child(&mut self) { method clamp_to_max (line 201) | pub(super) fn clamp_to_max(&mut self, max: i32) { method build (line 210) | pub(super) fn build(&mut self) { method default (line 28) | fn default() -> Self { method fmt (line 40) | fn fmt(&self, f: &mut Formatter<'_>) -> Result { FILE: src/scanner/policy_data.rs type PolicyData (line 9) | pub struct PolicyData { method new (line 44) | pub fn new(policy: RequesterPolicy, timeout: u64) -> Self { method with_rate_limit (line 61) | pub fn with_rate_limit(mut self, rate_limit: usize) -> Self { method set_reqs_sec (line 67) | pub(super) fn set_reqs_sec(&self, reqs_sec: usize) { method set_errors (line 86) | pub(super) fn set_errors(&self, trigger: PolicyTrigger, errors: usize) { method get_errors (line 94) | pub(super) fn get_errors(&self, trigger: PolicyTrigger) -> usize { method heap_initialized (line 102) | pub(super) fn heap_initialized(&self) -> bool { method reset_heap (line 107) | pub(super) fn reset_heap(&self) { method set_limit (line 117) | fn set_limit(&self, limit: usize) { method get_limit (line 122) | pub(super) fn get_limit(&self) -> usize { method adjust_up (line 127) | pub(super) fn adjust_up(&self, streak_counter: &usize) { method adjust_down (line 170) | pub(super) fn adjust_down(&self) { function set_reqs_sec_builds_heap_and_sets_initial_value (line 188) | fn set_reqs_sec_builds_heap_and_sets_initial_value() { function policy_data_getters_and_setters (line 202) | fn policy_data_getters_and_setters() { function policy_data_adjust_down_simple (line 216) | fn policy_data_adjust_down_simple() { function policy_data_adjust_down_no_children (line 226) | fn policy_data_adjust_down_no_children() { function policy_data_adjust_up_simple (line 242) | fn policy_data_adjust_up_simple() { function policy_data_adjust_up_with_streak_and_2_moves (line 252) | fn policy_data_adjust_up_with_streak_and_2_moves() { function policy_data_adjust_up_with_streak_and_2_moves_to_arrive_at_root (line 270) | fn policy_data_adjust_up_with_streak_and_2_moves_to_arrive_at_root() { function policy_data_adjust_up_with_streak_and_2_moves_to_find_less_than_current (line 287) | fn policy_data_adjust_up_with_streak_and_2_moves_to_find_less_than_curre... function policy_data_adjust_up_with_streak_and_3_moves (line 304) | fn policy_data_adjust_up_with_streak_and_3_moves() { function policy_data_adjust_up_with_no_children_2_moves (line 321) | fn policy_data_adjust_up_with_no_children_2_moves() { function policy_data_adjust_up_with_no_children_3_moves (line 339) | fn policy_data_adjust_up_with_no_children_3_moves() { function increase_limit_heap_coverage_by_hitting_edge_cases (line 357) | fn increase_limit_heap_coverage_by_hitting_edge_cases() { FILE: src/scanner/requester.rs type Requester (line 46) | pub(super) struct Requester { method from (line 80) | pub fn from(scanner: &FeroxScanner, ferox_scan: Arc) -> Res... method build_a_bucket (line 108) | fn build_a_bucket(limit: usize) -> Result { method cool_down (line 129) | async fn cool_down(&self) { method limit (line 139) | pub async fn limit(&self) -> Result<()> { method too_many_errors (line 150) | fn too_many_errors(&self) -> bool { method too_many_status_errors (line 160) | fn too_many_status_errors(&self, trigger: PolicyTrigger) -> bool { method should_enforce_policy (line 179) | fn should_enforce_policy(&self) -> Option { method adjust_limit (line 221) | async fn adjust_limit(&self, trigger: PolicyTrigger, create_limiter: b... method set_rate_limiter (line 318) | async fn set_rate_limiter(&self, new_limit: Option) -> Result<(... method tune (line 339) | async fn tune(&self, trigger: PolicyTrigger) -> Result<()> { method bail (line 395) | async fn bail(&self, trigger: PolicyTrigger) -> Result<()> { method request (line 447) | pub async fn request(&self, word: &str) -> Result<()> { function setup_requester_test (line 697) | async fn setup_requester_test(config: Option>) -> (Ar... function increment_errors (line 726) | async fn increment_errors(handles: Arc, scan: Arc, n... function increment_scan_errors (line 738) | async fn increment_scan_errors(handles: Arc, url: &str, num_err... function increment_scan_status_codes (line 747) | async fn increment_scan_status_codes( function increment_status_codes (line 760) | async fn increment_status_codes( function create_scan (line 780) | async fn create_scan( function should_enforce_policy_returns_false_on_not_enough_requests_seen (line 835) | async fn should_enforce_policy_returns_false_on_not_enough_requests_seen... function should_enforce_policy_returns_true_on_error_times_threads (line 859) | async fn should_enforce_policy_returns_true_on_error_times_threads() { function should_enforce_policy_returns_true_on_excessive_403s (line 889) | async fn should_enforce_policy_returns_true_on_excessive_403s() { function should_enforce_policy_returns_true_on_excessive_429s (line 927) | async fn should_enforce_policy_returns_true_on_excessive_429s() { function bail_calls_abort_on_highest_errored_feroxscan (line 968) | async fn bail_calls_abort_on_highest_errored_feroxscan() { function bail_returns_ok_on_no_active_scans (line 1011) | async fn bail_returns_ok_on_no_active_scans() { function should_enforce_policy_returns_none_on_cooldown (line 1042) | async fn should_enforce_policy_returns_none_on_cooldown() { function cooldown_pauses_for_wait_time (line 1070) | async fn cooldown_pauses_for_wait_time() { function adjust_limit_increments_streak_counter_on_upward_movement (line 1098) | async fn adjust_limit_increments_streak_counter_on_upward_movement() { function adjust_limit_resets_streak_counter_on_downward_movement (line 1129) | async fn adjust_limit_resets_streak_counter_on_downward_movement() { function adjust_limit_removes_rate_limiter (line 1171) | async fn adjust_limit_removes_rate_limiter() { function too_many_status_errors_returns_correct_values (line 1204) | async fn too_many_status_errors_returns_correct_values() { function set_rate_limiter_early_exit (line 1244) | async fn set_rate_limiter_early_exit() { function tune_sets_expected_values_and_then_waits (line 1276) | async fn tune_sets_expected_values_and_then_waits() { function build_a_bucket_handles_low_rates_correctly (line 1352) | fn build_a_bucket_handles_low_rates_correctly() { function policy_triggered_reset_when_limiter_removed (line 1375) | async fn policy_triggered_reset_when_limiter_removed() { function should_enforce_policy_uses_per_scan_requests (line 1422) | async fn should_enforce_policy_uses_per_scan_requests() { function heap_values_clamped_to_rate_limit_cap (line 1463) | async fn heap_values_clamped_to_rate_limit_cap() { function auto_tune_with_cap_adjusts_down_on_errors (line 1488) | async fn auto_tune_with_cap_adjusts_down_on_errors() { function auto_tune_with_cap_never_exceeds_cap_on_upward_adjustment (line 1513) | async fn auto_tune_with_cap_never_exceeds_cap_on_upward_adjustment() { function remove_limit_with_cap_sets_to_cap_instead_of_removing (line 1547) | async fn remove_limit_with_cap_sets_to_cap_instead_of_removing() { function initial_limiter_set_to_cap_when_both_flags_present (line 1593) | async fn initial_limiter_set_to_cap_when_both_flags_present() { function capped_auto_tune_full_lifecycle (line 1635) | async fn capped_auto_tune_full_lifecycle() { FILE: src/scanner/tests.rs function get_scan_by_url_bails_on_unfound_url (line 16) | async fn get_scan_by_url_bails_on_unfound_url() { FILE: src/scanner/utils.rs type PolicyTrigger (line 3) | pub enum PolicyTrigger { method as_index (line 19) | pub fn as_index(&self) -> usize { FILE: src/statistics/container.rs type Stats (line 26) | pub struct Stats { method deserialize (line 215) | fn deserialize(deserializer: D) -> Result method new (line 480) | pub fn new(is_json: bool) -> Self { method expected_per_scan (line 490) | pub fn expected_per_scan(&self) -> usize { method resources_discovered (line 495) | pub fn resources_discovered(&self) -> usize { method errors (line 500) | pub fn errors(&self) -> usize { method status_403s (line 505) | pub fn status_403s(&self) -> usize { method status_429s (line 510) | pub fn status_429s(&self) -> usize { method total_expected (line 515) | pub fn total_expected(&self) -> usize { method initial_targets (line 520) | pub fn initial_targets(&self) -> usize { method add_request (line 525) | pub fn add_request(&self) { method update_runtime (line 530) | fn update_runtime(&self, seconds: f64) { method update_targets (line 537) | pub fn update_targets(&self, targets: Vec) { method save (line 544) | pub fn save(&self, seconds: f64, location: &str) -> Result<()> { method add_error (line 559) | pub fn add_error(&self, error: StatError) { method add_status_code (line 592) | pub fn add_status_code(&self, status: StatusCode) { method update_f64_field (line 641) | pub fn update_f64_field(&self, field: StatField, value: f64) { method subtract_from_usize_field (line 650) | pub fn subtract_from_usize_field(&self, field: StatField, value: usize) { method update_usize_field (line 657) | pub fn update_usize_field(&self, field: StatField, value: usize) { method merge_from (line 698) | pub fn merge_from(&self, filename: &str) -> Result<()> { method as_str (line 147) | fn as_str(&self) -> String { method as_json (line 152) | fn as_json(&self) -> Result { method serialize (line 160) | fn serialize(&self, serializer: S) -> Result function statistics_handler_increments_requests (line 775) | async fn statistics_handler_increments_requests() -> Result<()> { function statistics_handler_increments_403_via_status_code (line 795) | async fn statistics_handler_increments_403_via_status_code() { function statistics_handler_increments_500_via_status_code (line 816) | async fn statistics_handler_increments_500_via_status_code() -> Result<(... function stats_increments_timeouts (line 838) | fn stats_increments_timeouts() { function stats_increments_wildcards (line 856) | fn stats_increments_wildcards() { function stats_increments_responses_filtered (line 872) | fn stats_increments_responses_filtered() { function stats_merge_from_alters_correct_fields (line 887) | fn stats_merge_from_alters_correct_fields() { function update_runtime_works (line 940) | fn update_runtime_works() { function status_403s_returns_correct_value (line 951) | fn status_403s_returns_correct_value() { function status_429s_returns_correct_value (line 960) | fn status_429s_returns_correct_value() { FILE: src/statistics/error.rs type StatError (line 3) | pub enum StatError { FILE: src/statistics/field.rs type StatField (line 4) | pub enum StatField { FILE: src/statistics/tests.rs function setup_stats_test (line 14) | pub fn setup_stats_test() -> (Joiner, StatsHandle) { function teardown_stats_test (line 21) | pub async fn teardown_stats_test(sender: CommandSender, task: Joiner) { function statistics_handler_exits (line 29) | async fn statistics_handler_exits() -> Result<()> { function save_writes_stats_object_to_disk (line 42) | fn save_writes_stats_object_to_disk() { FILE: src/sync/dynamic_semaphore.rs type DynamicSemaphore (line 40) | pub struct DynamicSemaphore { method new (line 98) | pub fn new(permits: usize) -> Self { method acquire (line 128) | pub async fn acquire(&self) -> Result, toki... method try_acquire (line 188) | pub fn try_acquire(&self) -> Result, tokio:... method reduce_capacity (line 254) | pub fn reduce_capacity(&self, new_capacity: usize) -> usize { method increase_capacity (line 304) | pub fn increase_capacity(&self, new_capacity: usize) -> usize { method current_capacity (line 329) | pub fn current_capacity(&self) -> usize { method available_permits (line 352) | pub fn available_permits(&self) -> usize { method close (line 376) | pub fn close(&self) { method is_closed (line 393) | pub fn is_closed(&self) -> bool { method permits_in_use (line 416) | pub fn permits_in_use(&self) -> usize { type DynamicSemaphorePermit (line 67) | pub struct DynamicSemaphorePermit<'a> { method drop (line 438) | fn drop(&mut self) { function test_basic_acquire_release (line 473) | async fn test_basic_acquire_release() { function test_capacity_reduction (line 498) | async fn test_capacity_reduction() { function test_capacity_increase (line 531) | async fn test_capacity_increase() { function test_try_acquire (line 544) | async fn test_try_acquire() { function test_close (line 555) | async fn test_close() { function test_over_capacity_acquisition_prevention (line 567) | async fn test_over_capacity_acquisition_prevention() { function test_concurrent_capacity_reduction (line 611) | async fn test_concurrent_capacity_reduction() { function test_stress_concurrent_operations (line 643) | async fn test_stress_concurrent_operations() { function test_feroxbuster_integration_scenario (line 684) | async fn test_feroxbuster_integration_scenario() { function test_edge_cases (line 720) | async fn test_edge_cases() { FILE: src/traits.rs type FeroxFilter (line 20) | pub trait FeroxFilter: Debug + Send + Sync { method should_filter_response (line 22) | fn should_filter_response(&self, response: &FeroxResponse) -> bool; method box_eq (line 25) | fn box_eq(&self, other: &dyn Any) -> bool; method as_any (line 28) | fn as_any(&self) -> &dyn Any; method fmt (line 32) | fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), fmt::Error> { method eq (line 96) | fn eq(&self, other: &Box) -> bool { type FeroxSerialize (line 103) | pub trait FeroxSerialize: Serialize { method as_str (line 106) | fn as_str(&self) -> String; method as_json (line 109) | fn as_json(&self) -> Result; FILE: src/url.rs type UrlExt (line 9) | pub trait UrlExt { method is_in_scope (line 19) | fn is_in_scope(&self, scope: &[Url]) -> bool; method is_subdomain_of (line 22) | fn is_subdomain_of(&self, parent_url: &Url) -> bool; method is_in_scope (line 26) | fn is_in_scope(&self, scope: &[Url]) -> bool { method is_subdomain_of (line 51) | fn is_subdomain_of(&self, parent_url: &Url) -> bool { type FeroxUrl (line 86) | pub struct FeroxUrl { method from_string (line 97) | pub fn from_string(target: &str, handles: Arc) -> Self { method from_url (line 105) | pub fn from_url(target: &Url, handles: Arc) -> Self { method formatted_urls (line 118) | pub fn formatted_urls( method format (line 159) | pub fn format(&self, word: &str, extension: Option<&str>) -> Result String { method depth (line 264) | pub fn depth(&self) -> Result { method fmt (line 289) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function formatted_urls_no_extension_returns_base_url_with_word (line 301) | fn formatted_urls_no_extension_returns_base_url_with_word() { function formatted_urls_one_extension_returns_two_urls (line 310) | fn formatted_urls_one_extension_returns_two_urls() { function formatted_urls_multiple_extensions_returns_n_plus_one_urls (line 331) | fn formatted_urls_multiple_extensions_returns_n_plus_one_urls() { function depth_base_url_returns_1 (line 372) | fn depth_base_url_returns_1() { function depth_base_url_with_slash_returns_1 (line 382) | fn depth_base_url_with_slash_returns_1() { function depth_one_dir_returns_2 (line 392) | fn depth_one_dir_returns_2() { function depth_one_dir_with_slash_returns_2 (line 402) | fn depth_one_dir_with_slash_returns_2() { function format_url_normal (line 412) | fn format_url_normal() { function format_url_no_word (line 425) | fn format_url_no_word() { function format_url_joins_queries (line 434) | fn format_url_joins_queries() { function format_url_without_word_joins_queries (line 452) | fn format_url_without_word_joins_queries() { function format_url_no_url (line 471) | fn format_url_no_url() { function format_url_word_with_preslash (line 479) | fn format_url_word_with_preslash() { function format_url_word_with_postslash (line 492) | fn format_url_word_with_postslash() { function format_url_word_with_two_prepended_slashes (line 505) | fn format_url_word_with_two_prepended_slashes() { function format_url_word_with_two_prepended_slashes_and_extensions (line 518) | fn format_url_word_with_two_prepended_slashes_and_extensions() { function format_url_word_that_is_a_url (line 532) | fn format_url_word_that_is_a_url() { function formatted_urls_with_postslash_and_extensions (line 544) | fn formatted_urls_with_postslash_and_extensions() { function test_is_in_scope (line 571) | fn test_is_in_scope() { function test_is_in_scope_subdomain (line 584) | fn test_is_in_scope_subdomain() { function test_is_in_scope_not_in_scope (line 596) | fn test_is_in_scope_not_in_scope() { function test_is_in_scope_empty_scope (line 608) | fn test_is_in_scope_empty_scope() { function test_is_in_scope_domain_only_scope (line 617) | fn test_is_in_scope_domain_only_scope() { function test_is_in_scope_subdomain_domain_only_scope (line 626) | fn test_is_in_scope_subdomain_domain_only_scope() { function test_is_in_scope_no_domain (line 635) | fn test_is_in_scope_no_domain() { function test_is_subdomain_of_true (line 645) | fn test_is_subdomain_of_true() { function test_is_subdomain_of_same_domain (line 654) | fn test_is_subdomain_of_same_domain() { function test_is_subdomain_of_different_domain (line 663) | fn test_is_subdomain_of_different_domain() { function test_is_subdomain_of_multi_level (line 672) | fn test_is_subdomain_of_multi_level() { function test_is_subdomain_of_no_domain (line 681) | fn test_is_subdomain_of_no_domain() { function test_is_subdomain_of_parent_no_domain (line 690) | fn test_is_subdomain_of_parent_no_domain() { function test_is_not_in_empty_scope (line 699) | fn test_is_not_in_empty_scope() { function test_is_in_scope_subdomain_with_empty_scope (line 708) | fn test_is_in_scope_subdomain_with_empty_scope() { function test_is_in_scope_scope_match (line 717) | fn test_is_in_scope_scope_match() { function test_is_in_scope_not_allowed (line 726) | fn test_is_in_scope_not_allowed() { function test_is_in_scope_empty_scope_different_domain (line 735) | fn test_is_in_scope_empty_scope_different_domain() { function test_is_in_scope_subdomain_in_scope (line 744) | fn test_is_in_scope_subdomain_in_scope() { FILE: src/utils.rs function is_certificate_error (line 37) | fn is_certificate_error(error: &reqwest::Error) -> bool { function open_file (line 95) | pub fn open_file(filename: &str) -> Result> { function status_colorizer (line 111) | pub fn status_colorizer(status: &str) -> String { function fmt_err (line 125) | pub fn fmt_err(msg: &str) -> String { function timestamp (line 131) | pub fn timestamp() -> f64 { function send_try_recursion_command (line 146) | pub(crate) async fn send_try_recursion_command( function module_colorizer (line 165) | pub fn module_colorizer(modname: &str) -> String { function ferox_print (line 179) | pub fn ferox_print(msg: &str, bar: &ProgressBar) { function logged_request (line 190) | pub async fn logged_request( function make_request (line 222) | pub async fn make_request( function create_report_string (line 335) | pub fn create_report_string( function set_open_file_limit (line 378) | pub fn set_open_file_limit(limit: u64) -> bool { function write_to (line 414) | pub fn write_to( function should_deny_absolute (line 448) | fn should_deny_absolute(url_to_test: &Url, denier: &Url, handles: Arc bool { function should_deny_url (line 558) | pub fn should_deny_url(url: &Url, handles: Arc) -> Result { function slugify_filename (line 596) | pub fn slugify_filename(url: &str, prefix: &str, suffix: &str) -> String { function parse_url_with_raw_path (line 628) | pub fn parse_url_with_raw_path(url: &str) -> Result { function utils_parse_url_with_raw_path_javascript (line 814) | fn utils_parse_url_with_raw_path_javascript() { function utils_parse_url_with_raw_path (line 826) | fn utils_parse_url_with_raw_path() { function utils_set_open_file_limit_with_low_requested_limit (line 953) | fn utils_set_open_file_limit_with_low_requested_limit() { function utils_set_open_file_limit_with_high_requested_limit (line 961) | fn utils_set_open_file_limit_with_high_requested_limit() { function utils_set_open_file_limit_with_fails_when_both_limits_are_equal (line 972) | fn utils_set_open_file_limit_with_fails_when_both_limits_are_equal() { function status_colorizer_uses_red_for_500s (line 982) | fn status_colorizer_uses_red_for_500s() { function status_colorizer_uses_red_for_400s (line 988) | fn status_colorizer_uses_red_for_400s() { function status_colorizer_uses_red_for_errors (line 994) | fn status_colorizer_uses_red_for_errors() { function status_colorizer_uses_cyan_for_wildcards (line 1000) | fn status_colorizer_uses_cyan_for_wildcards() { function status_colorizer_uses_blue_for_100s (line 1006) | fn status_colorizer_uses_blue_for_100s() { function status_colorizer_uses_green_for_200s (line 1012) | fn status_colorizer_uses_green_for_200s() { function status_colorizer_uses_yellow_for_300s (line 1018) | fn status_colorizer_uses_yellow_for_300s() { function status_colorizer_returns_as_is (line 1024) | fn status_colorizer_returns_as_is() { function should_deny_url_blocks_when_denier_is_exact_match (line 1031) | fn should_deny_url_blocks_when_denier_is_exact_match() { function should_deny_url_doesnt_compare_mismatched_domains (line 1054) | fn should_deny_url_doesnt_compare_mismatched_domains() { function should_deny_url_doesnt_compare_non_domains (line 1077) | fn should_deny_url_doesnt_compare_non_domains() { function should_deny_url_doesnt_compare_mismatched_domains_in_scanned (line 1102) | fn should_deny_url_doesnt_compare_mismatched_domains_in_scanned() { function should_deny_url_doesnt_compare_non_domains_in_scanned (line 1134) | fn should_deny_url_doesnt_compare_non_domains_in_scanned() { function should_deny_url_blocks_child (line 1156) | fn should_deny_url_blocks_child() { function should_deny_url_doesnt_block_non_child (line 1179) | fn should_deny_url_doesnt_block_non_child() { function should_deny_url_blocks_child_when_scan_url_isnt_parent (line 1202) | fn should_deny_url_blocks_child_when_scan_url_isnt_parent() { function should_deny_url_doesnt_block_child_when_scan_url_is_parent (line 1225) | fn should_deny_url_doesnt_block_child_when_scan_url_is_parent() { function should_deny_url_blocks_urls_based_on_regex_in_path (line 1249) | fn should_deny_url_blocks_urls_based_on_regex_in_path() { function should_deny_url_blocks_urls_based_on_regex_in_scheme (line 1273) | fn should_deny_url_blocks_urls_based_on_regex_in_scheme() { FILE: tests/policies/test_policies_with_deps.rs type DelayedHttpServer (line 39) | struct DelayedHttpServer { method new (line 56) | fn new() -> Result> { method url (line 133) | fn url(&self, path: &str) -> String { function find_available_port (line 45) | fn find_available_port() -> Result> { method drop (line 139) | fn drop(&mut self) { function auto_bail_cancels_scan_with_timeouts (line 148) | fn auto_bail_cancels_scan_with_timeouts() { function auto_bail_with_caddy (line 309) | fn auto_bail_with_caddy() { FILE: tests/test_banner.rs function banner_prints_proxy (line 11) | fn banner_prints_proxy() -> Result<(), Box> { function banner_prints_replay_proxy (line 49) | fn banner_prints_replay_proxy() -> Result<(), Box> { function banner_prints_headers (line 87) | fn banner_prints_headers() { function banner_prints_denied_urls (line 118) | fn banner_prints_denied_urls() { function banner_prints_scope_urls (line 153) | fn banner_prints_scope_urls() { function banner_prints_random_agent (line 185) | fn banner_prints_random_agent() { function banner_prints_filter_sizes (line 211) | fn banner_prints_filter_sizes() { function banner_prints_queries (line 256) | fn banner_prints_queries() { function banner_prints_status_codes (line 287) | fn banner_prints_status_codes() { function banner_prints_replay_codes (line 314) | fn banner_prints_replay_codes() { function banner_prints_output_file (line 345) | fn banner_prints_output_file() { function banner_prints_insecure (line 376) | fn banner_prints_insecure() { function banner_prints_redirects (line 403) | fn banner_prints_redirects() { function banner_prints_extensions (line 430) | fn banner_prints_extensions() { function banner_prints_dont_filter (line 460) | fn banner_prints_dont_filter() { function banner_prints_verbosity_one (line 487) | fn banner_prints_verbosity_one() { function banner_prints_verbosity_two (line 514) | fn banner_prints_verbosity_two() { function banner_prints_verbosity_three (line 541) | fn banner_prints_verbosity_three() { function banner_prints_verbosity_four (line 568) | fn banner_prints_verbosity_four() { function banner_prints_add_slash (line 595) | fn banner_prints_add_slash() { function banner_prints_infinite_depth (line 622) | fn banner_prints_infinite_depth() { function banner_prints_recursion_depth (line 650) | fn banner_prints_recursion_depth() { function banner_prints_server_certs (line 678) | fn banner_prints_server_certs() { function banner_prints_client_cert_and_key (line 708) | fn banner_prints_client_cert_and_key() { function banner_prints_no_recursion (line 740) | fn banner_prints_no_recursion() { function banner_doesnt_print (line 767) | fn banner_doesnt_print() { function banner_prints_extract_links (line 784) | fn banner_prints_extract_links() { function banner_prints_scan_limit (line 811) | fn banner_prints_scan_limit() { function banner_prints_response_size_limit (line 839) | fn banner_prints_response_size_limit() { function banner_prints_filter_status (line 867) | fn banner_prints_filter_status() { function banner_prints_json (line 894) | fn banner_prints_json() { function banner_prints_debug_log (line 923) | fn banner_prints_debug_log() { function banner_prints_filter_regex (line 951) | fn banner_prints_filter_regex() { function banner_prints_time_limit (line 979) | fn banner_prints_time_limit() { function banner_prints_similarity_filter (line 1007) | fn banner_prints_similarity_filter() { function banner_prints_rate_limit (line 1035) | fn banner_prints_rate_limit() { function banner_prints_auto_tune (line 1063) | fn banner_prints_auto_tune() { function banner_prints_auto_bail (line 1090) | fn banner_prints_auto_bail() { function banner_doesnt_print_when_silent (line 1117) | fn banner_doesnt_print_when_silent() { function banner_doesnt_print_when_quiet (line 1142) | fn banner_doesnt_print_when_quiet() { function banner_prints_parallel (line 1167) | fn banner_prints_parallel() { function banner_prints_methods (line 1192) | fn banner_prints_methods() { function banner_prints_data (line 1222) | fn banner_prints_data() { function banner_prints_collect_extensions_and_dont_collect_default (line 1254) | fn banner_prints_collect_extensions_and_dont_collect_default() { function banner_prints_collect_extensions_and_dont_collect_with_input (line 1282) | fn banner_prints_collect_extensions_and_dont_collect_with_input() { function banner_prints_collect_backups (line 1313) | fn banner_prints_collect_backups() { function banner_prints_collect_words (line 1339) | fn banner_prints_collect_words() { function banner_prints_all_composite_settings_smart (line 1365) | fn banner_prints_all_composite_settings_smart() { function banner_prints_all_composite_settings_thorough (line 1394) | fn banner_prints_all_composite_settings_thorough() { function banner_prints_all_composite_settings_burp (line 1423) | fn banner_prints_all_composite_settings_burp() { function banner_prints_all_composite_settings_data_json_stdin (line 1450) | fn banner_prints_all_composite_settings_data_json_stdin() { function banner_prints_all_composite_settings_data_json_file (line 1476) | fn banner_prints_all_composite_settings_data_json_file() { function banner_prints_all_composite_settings_data_urlencoded_stdin (line 1505) | fn banner_prints_all_composite_settings_data_urlencoded_stdin() { function banner_prints_all_composite_settings_data_urlencoded_file (line 1539) | fn banner_prints_all_composite_settings_data_urlencoded_file() { function banner_prints_all_composite_settings_burp_replay (line 1570) | fn banner_prints_all_composite_settings_burp_replay() { function banner_prints_force_recursion (line 1597) | fn banner_prints_force_recursion() { function banner_prints_scan_dir_listings (line 1623) | fn banner_prints_scan_dir_listings() { function banner_prints_limit_dirs (line 1649) | fn banner_prints_limit_dirs() { function banner_prints_update_app (line 1676) | fn banner_prints_update_app() { function banner_prints_unique (line 1687) | fn banner_prints_unique() { FILE: tests/test_config.rs function read_in_config_file_for_settings (line 11) | fn read_in_config_file_for_settings() -> Result<(), Box Result<(), Box Result<(), Box<... function extractor_finds_relative_url (line 88) | fn extractor_finds_relative_url() -> Result<(), Box Result<(), Box Result<(), Box Result<(), Box Result<(), Box Result<(), Box Result<(), B... function test_two_good_targets_scan_succeeds (line 115) | fn test_two_good_targets_scan_succeeds() -> Result<(), Box Result<(), Box Result<(), B... function heuristics_wildcard_test_with_two_static_wildcards_with_silent_enabled (line 266) | fn heuristics_wildcard_test_with_two_static_wildcards_with_silent_enabled( function heuristics_wildcard_test_that_auto_filtering_403s_still_allows_for_recursion_into_403_directories (line 309) | fn heuristics_wildcard_test_that_auto_filtering_403s_still_allows_for_re... FILE: tests/test_main.rs function main_use_root_owned_file_as_wordlist (line 13) | fn main_use_root_owned_file_as_wordlist() { function main_use_empty_wordlist (line 36) | fn main_use_empty_wordlist() -> Result<(), Box> { function main_use_empty_stdin_targets (line 63) | fn main_use_empty_stdin_targets() -> Result<(), Box Result<(), Box Result<(), Box Result<(), Box Result<(), Box Result<(), Box Result<(), Box Result<(), ... function scanner_single_request_quiet_scan (line 270) | fn scanner_single_request_quiet_scan() -> Result<(), Box Result<(), Box Result<(), Box<... function scanner_single_request_scan_with_debug_logging (line 426) | fn scanner_single_request_scan_with_debug_logging() { function scanner_single_request_scan_with_debug_logging_as_json (line 463) | fn scanner_single_request_scan_with_debug_logging_as_json() { function scanner_single_request_scan_with_regex_filtered_result (line 506) | fn scanner_single_request_scan_with_regex_filtered_result() { function scanner_recursion_works_with_403_directories (line 548) | fn scanner_recursion_works_with_403_directories() { function rate_limit_enforced_when_specified (line 600) | fn rate_limit_enforced_when_specified() { function add_discovered_extension_updates_bars_and_stats (line 637) | fn add_discovered_extension_updates_bars_and_stats() { function collect_backups_makes_appropriate_requests (line 679) | fn collect_backups_makes_appropriate_requests() { function collect_words_makes_appropriate_requests (line 755) | fn collect_words_makes_appropriate_requests() { function scanner_forced_recursion_ignores_normal_redirect_logic (line 847) | fn scanner_forced_recursion_ignores_normal_redirect_logic() -> Result<()... FILE: tests/test_unique_responses.rs function word_and_status_makes_a_response_unique_and_isnt_seen (line 13) | fn word_and_status_makes_a_response_unique_and_isnt_seen() -> Result<(),... function bytes_and_status_makes_a_redirect_response_unique_and_isnt_seen (line 55) | fn bytes_and_status_makes_a_redirect_response_unique_and_isnt_seen( FILE: tests/utils/mod.rs function setup_tmp_directory (line 7) | pub fn setup_tmp_directory( function teardown_tmp_directory (line 19) | pub fn teardown_tmp_directory(directory: TempDir) {