From: Thomas Lamprecht Date: Wed, 18 Nov 2020 16:45:00 +0000 (+0100) Subject: quarantine: user self service: add some response delays X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=be9e71684b004db1339c19161c028742b2d4ed85;p=pmg-api.git quarantine: user self service: add some response delays Signed-off-by: Thomas Lamprecht --- diff --git a/src/PMG/API2/Quarantine.pm b/src/PMG/API2/Quarantine.pm index f0d9003..991c04d 100644 --- a/src/PMG/API2/Quarantine.pm +++ b/src/PMG/API2/Quarantine.pm @@ -1310,9 +1310,11 @@ __PACKAGE__->register_method ({ my $stat = File::stat::stat($link_map_fn); - if (defined($stat) && ($stat->mtime) + 5 > $starttime) { + if (defined($stat) && ($stat->mtime + 5) > $starttime) { + sleep(3); die "Too many requests. Please try again later\n"; } + warn "mtime: ". $stat->mtime ."\n"; my $domains = PVE::INotify::read_file('domains'); my $domainregex = PMG::Utils::domain_regex([keys %$domains]); @@ -1320,6 +1322,7 @@ __PACKAGE__->register_method ({ my $receiver = $param->{mail}; if ($receiver !~ $domainregex) { + sleep(3); return undef; # silently ignore invalid mails } @@ -1330,6 +1333,7 @@ __PACKAGE__->register_method ({ for my $line (split("\n", $data)) { next if $line !~ m/^\Q$receiver\E (\d+)$/; if (($1 + $per_user_limit) > $starttime) { + sleep(3); die "Too many requests for '$receiver', only one request per" ."hour is permitted. Please try again later\n"; } else { @@ -1358,6 +1362,7 @@ __PACKAGE__->register_method ({ die $@ if $@; send_link_mail($cfg, $receiver); + sleep(1); # always delay for a bit return undef; }});