equal
deleted
inserted
replaced
12 sub url_encode { |
12 sub url_encode { |
13 return shift =~ s/(?i:([^a-z]))/sprintf '%%%02x', ord $1/rge; |
13 return shift =~ s/(?i:([^a-z]))/sprintf '%%%02x', ord $1/rge; |
14 } |
14 } |
15 |
15 |
16 sub main { |
16 sub main { |
|
17 push @ARGV, "$ENV{HOME}/.google_authenticator"; |
17 |
18 |
18 GetOptions( |
19 GetOptions( |
19 'h|help' => sub { pod2usage(-exit => 0, -verbose => 1) }, |
20 'h|help' => sub { pod2usage(-exit => 0, -verbose => 1) }, |
20 'm|man' => sub { pod2usage(-exit => 0, -verbose => 2) }, |
21 'm|man' => sub { pod2usage(-exit => 0, -verbose => 2) }, |
21 ) or pod2usage; |
22 ) or pod2usage; |
22 |
23 |
23 if (@ARGV) { splice @ARGV, 1 } |
24 splice @ARGV, 1; |
24 else { @ARGV = ("$ENV{HOME}/.google_authenticator") } |
|
25 |
25 |
26 my $google = do { local $/ = undef; <> } |
26 my $google = do { local $/ = undef; <> } |
27 or die "$0: Can't read any input from $ARGV.\n"; |
27 or die "$0: Can't read any input from $ARGV.\n"; |
28 |
28 |
29 my ($secret) = $google =~ /\A(\S+)/ |
29 my ($secret) = $google =~ /\A(\S+)/ |
33 or die "$0: Can't read method (time/hash) from $ARGV.\n"; |
33 or die "$0: Can't read method (time/hash) from $ARGV.\n"; |
34 |
34 |
35 my $user = $ENV{USER} // $ENV{LOGNAME} // getpwuid $>; |
35 my $user = $ENV{USER} // $ENV{LOGNAME} // getpwuid $>; |
36 my $host = hostname; |
36 my $host = hostname; |
37 |
37 |
38 open(my $o, '>&STDOUT'); |
|
39 if (-t STDIN) { |
38 if (-t STDIN) { |
40 open STDOUT, '|qrencode -t ansi256' |
39 open STDOUT, '|qrencode -t ansi256' |
41 or die "$0: Can't open helper binary `qrencode': $!\n"; |
40 or die "$0: Can't open helper binary `qrencode': $!\n"; |
42 } |
41 } |
43 |
42 |