Skip to content
Snippets Groups Projects
Select Git revision
  • fe3325754093cc02e7f7abe729efd68593b4d2fe
  • master default protected
  • e-infra2
  • ci-megalinter-speedup
  • egi-fixes
  • e-infra
  • envri-hub-new-aai
  • egi-b2drop-no-collapse
  • lfs
  • gpu_staging
  • resurrect-testing-ownloud
  • experiments/collab
  • update_claim_group_keys
  • envri-hub
  • enable_rtc
  • eosc-ui
  • future/jupyterhub-5.x
  • versioning
  • eosc-templating
  • staging1-raw-image
  • token-exchange
21 results

extra

Blame
  • IPtables.pm 1.52 KiB
    package IPtables;
    use strict;
    use warnings;
    use Data::Dumper;
    
    my %CONSTANTS =    (
                            enabled    =>  "no",
                            outputfile =>  "tmp/iptables.txt",
                            threshold  =>  250,
                            excludedip =>  [],
                            eventtype  =>  [],
                            chainname  =>  "BLOCK",
                            destchain  =>  "DROP",
                            maxage     =>  "1D",
                         );
    
    my %FORMAT   =      (   maxage     => qr/\d+[hdmHDM]/, logging  => qr/enable|disable/,);
    
    sub run {
        my (undef, $modprefix, $cfg, $dbh, $db_engine) = @_;
       
        my $v = Constants::mergeConfigs($cfg, $modprefix, \%CONSTANTS, \%FORMAT);
        
        my $eventtype_query = DB::joinIN("type", \@{$v->{'eventtype'}});
        my $excluded_query  = DB::joinNotIN("source", \@{$v->{'excludedip'}});
    
        my $condition = substr($excluded_query . $eventtype_query, 0, -5);
        my @columns= ("source");
        my @params = ($condition, DB::getOldDataDB($db_engine, "NEWER", $v->{'maxage'}));
        my $query = DB::getQueryCondThreshold($db_engine, "events", \@columns, \@params, $v->{'threshold'});
    
        my @rows = Utils::fetchall_array_hashref($dbh, $query);
    
        sub header { my $v = shift; return "/sbin/iptables -F $v->{'chainname'}\n"; };
        sub record { my ($r, $v) = @_; return "/sbin/iptables -A $v->{'chainname'} -s $r->{'source'}/32 -j $v->{'destchain'}\n"; };
    
        my $ret = Utils::generateOutput($v->{'outputfile'}, \@rows, \&header, \&record, undef, $v);
        return $ret;
    }
    1;