forbidden public key which is contained in authorized_k...
...eys file
... | ... |
@@ -474,7 +474,7 @@ sub update_authorized_keys_file { |
474 | 474 |
} |
475 | 475 |
|
476 | 476 |
# Parse file |
477 |
- my $result = $self->_parse_authorized_keys_file($authorized_keys_file); |
|
477 |
+ my $result = $self->parse_authorized_keys_file($authorized_keys_file); |
|
478 | 478 |
my $before_part = $result->{before_part}; |
479 | 479 |
my $gitprep_part = $result->{gitprep_part}; |
480 | 480 |
my $after_part = $result->{after_part}; |
... | ... |
@@ -524,7 +524,7 @@ sub update_authorized_keys_file { |
524 | 524 |
} |
525 | 525 |
} |
526 | 526 |
|
527 |
-sub _parse_authorized_keys_file { |
|
527 |
+sub parse_authorized_keys_file { |
|
528 | 528 |
my ($self, $file) = @_; |
529 | 529 |
|
530 | 530 |
my $start_symbol = "# gitprep start"; |
... | ... |
@@ -29,6 +29,7 @@ |
29 | 29 |
], |
30 | 30 |
key => [ |
31 | 31 |
['not_blank' => 'key is empty'], |
32 |
+ # Check if key format is valid |
|
32 | 33 |
sub { |
33 | 34 |
my ($original_key, $args, $vc) = @_; |
34 | 35 |
|
... | ... |
@@ -49,7 +50,29 @@ |
49 | 50 |
return {result => 0, message => 'Key already exists'}; |
50 | 51 |
} |
51 | 52 |
else { |
52 |
- return {result => 1, output => $key} |
|
53 |
+ my $key_is_contained; |
|
54 |
+ my $authorized_keys_file = app->manager->authorized_keys_file; |
|
55 |
+ if (defined $authorized_keys_file) { |
|
56 |
+ my $result |
|
57 |
+ = app->manager->parse_authorized_keys_file($authorized_keys_file); |
|
58 |
+ |
|
59 |
+ my $before_part = $result->{before_part}; |
|
60 |
+ my $after_part = $result->{after_part}; |
|
61 |
+ my $other_part = "$before_part\n$after_part"; |
|
62 |
+ if ($other_part =~ /\s\Q$original_key_edit\E(\s|$)/) { |
|
63 |
+ $key_is_contained = 1; |
|
64 |
+ } |
|
65 |
+ } |
|
66 |
+ |
|
67 |
+ if ($key_is_contained) { |
|
68 |
+ return { |
|
69 |
+ result => 0, |
|
70 |
+ message => "authorized_keys file already contain this key" |
|
71 |
+ }; |
|
72 |
+ } |
|
73 |
+ else { |
|
74 |
+ return {result => 1, output => $key} |
|
75 |
+ } |
|
53 | 76 |
} |
54 | 77 |
} |
55 | 78 |
else { |