From: Simon Ruderich Date: Mon, 1 Feb 2016 18:35:45 +0000 (+0100) Subject: add checksum mode (mapped to c) X-Git-Url: https://ruderich.org/simon/gitweb/?p=fcscs%2Ffcscs.git;a=commitdiff_plain;h=3b06a97d77fd81e87812f8a8588aefa50a947270 add checksum mode (mapped to c) --- diff --git a/bin/fcscs b/bin/fcscs index 971cb80..bbf9794 100755 --- a/bin/fcscs +++ b/bin/fcscs @@ -64,6 +64,7 @@ Short overview of the general usage, details below: - f: file paths - i: IPs - u: URLs + - c: checksums (e.g. MD5, SHA1, ..) - ... - /: search mode - for `normal' modes: @@ -747,6 +748,8 @@ The following normal modes are available: =item B select IPv4 and IPv6 addresses +=item B select checksums (MD5, SHA1, SHA256, SHA512) + =back =cut @@ -787,6 +790,18 @@ sub mapping_mode_ip { handler => $config->{handler}{ip}, }; } +sub mapping_mode_checksum { + my ($key, $screen, $config, $input) = @_; + + $screen->debug('mapping_mode_checksum', 'started'); + + my @matches = get_regex_matches($input, $config->{regex}{checksum}); + return { + select => 'checksum select', + matches => \@matches, + handler => $config->{handler}{checksum}, + }; +} =head2 SEARCH MODE (AND EXTEND MODE) @@ -1078,6 +1093,8 @@ them in parentheses): =item B select IPv4 and IPv6 addresses (C<\&mapping_mode_ip>) +=item B select checksums (e.g. MD5, SHA) (C<\&mapping_mode_checksum>) + =item B search for regex to get selection (C<\&mapping_mode_search>) =item B quit fcscs (C<\&mapping_quit>) @@ -1131,6 +1148,7 @@ my %mapping_mode = ( f => \&mapping_mode_path, u => \&mapping_mode_url, i => \&mapping_mode_ip, + c => \&mapping_mode_checksum, '/' => \&mapping_mode_search, q => \&mapping_quit, ); @@ -1256,6 +1274,8 @@ my %regex = ( # enough. ipv4 => qr!\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?:/\d{1,2})?)\b!, ipv6 => qr!\b((?:[0-9a-fA-F]{1,4})?(?::+[0-9a-fA-F]{1,4})+(?:/\d{1,3})?)\b!, + # MD5, SHA1, SHA256, SHA512 + checksum => qr!\b([0-9a-fA-F]{32}|[0-9a-fA-F]{40}|[0-9a-fA-F]{64}|[0-9a-fA-F]{128})\b!, ); =head2 HANDLERS @@ -1274,6 +1294,8 @@ The following handlers are available, defaults in parentheses. =item B used to handle IPs (C<\&handler_yank>) +=item B used to handle checksums (C<\&handler_yank>) + =back Example: @@ -1297,6 +1319,7 @@ my %handler = ( paste => \&handler_paste, url => \&handler_url, ip => \&handler_yank, + checksum => \&handler_yank, ); my %state = ( @@ -1319,6 +1342,7 @@ Create a new Curses attribute with the given fore- and background color. mapping_mode_path() mapping_mode_url() mapping_mode_ip() + mapping_mode_checksum() mapping_mode_search() mapping_paste() @@ -1398,6 +1422,7 @@ package Fcscs { sub mapping_mode_path { return main::mapping_mode_path(@_); } sub mapping_mode_url { return main::mapping_mode_url(@_); } sub mapping_mode_ip { return main::mapping_mode_ip(@_); } + sub mapping_mode_checksum { return main::mapping_mode_checksum(@_); } sub mapping_mode_search { return main::mapping_mode_search(@_); } sub mapping_paste { return main::mapping_paste(@_); }