Skip to content
Snippets Groups Projects
Select Git revision
  • e03d771fdb538bce361c6ff2996ede51cdcef820
  • master default protected
  • base-pairs-ladder
  • rednatco-v2
  • rednatco
  • test
  • ntc-tube-uniform-color
  • ntc-tube-missing-atoms
  • restore-vertex-array-per-program
  • watlas2
  • dnatco_new
  • cleanup-old-nodejs
  • webmmb
  • fix_auth_seq_id
  • update_deps
  • ext_dev
  • ntc_balls
  • nci-2
  • plugin
  • bugfix-0.4.5
  • nci
  • v0.5.0-dev.1
  • v0.4.5
  • v0.4.4
  • v0.4.3
  • v0.4.2
  • v0.4.1
  • v0.4.0
  • v0.3.12
  • v0.3.11
  • v0.3.10
  • v0.3.9
  • v0.3.8
  • v0.3.7
  • v0.3.6
  • v0.3.5
  • v0.3.4
  • v0.3.3
  • v0.3.2
  • v0.3.1
  • v0.3.0
41 results

server.ts

Blame
  • DNSblacklist.pm 2.46 KiB
    package DNSblacklist;
    use strict;
    use warnings;
    use Data::Dumper;
    
    my  %CONSTANTS =    (
                           target      => "127.0.0.2",
                           outputfile  => "tmp/blacklist.csv",
                           threshold   => 10,
                           excludedip  => [],
                           eventtype   => [],
                           maxage      => "1D",
                           ttl         => "3600",
                           zone        => "@",
                           dns         => "dns.example.com",
                           hostmaster  => "hostmaster\@example.com",
                           refresh     => "1800    ; refresh (30 minutes)",
                           retry       => "600     ; retry (10 minutes)",
                           expire      => "1209600 ; expire (2 weeks)",
                           minimum     => "86400   ; minimum (1 day)",
                         );
    
    my %FORMAT   =      (   maxage     => qr/\d+[hdmHDM]/, );
    
    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", "note");
        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);
    
        my ($sec, $min, $hr, $day, $mon, $year) = localtime;
        
        $v->{'serial'} = sprintf("%02d%02d%02d%02d%02d", $year - 100 , $mon + 1, $day,  $hr, $min); 
        $v->{'hostmaster'} =~ s/\@/\./;
    
        sub header { my $v = shift; return "\$ORIGIN .\n\$TTL $v->{'ttl'}\n$v->{'zone'}\t\t\t\t\t\tIN\tSOA\t$v->{'dns'}. $v->{'hostmaster'}. (\n\t\t\t\t\t\t\t\t$v->{'serial'} ; serial\n\t\t\t\t\t\t\t\t$v->{'refresh'}\n\t\t\t\t\t\t\t\t$v->{'retry'}\n\t\t\t\t\t\t\t\t$v->{'expire'}\n\t\t\t\t\t\t\t\t$v->{'minimum'}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tNS\t$v->{'dns'}.\n"; };
     
        sub record { my ($r, $v) = @_; $r->{'note'} = "" if !defined $r->{'note'};  return ";" . "$r->{'source'}\n" . join(".", reverse( split(/\./, $r->{'source'}))) . "\t\tIN\t\tA\t$v->{'target'}\n\t\t\t\t\tIN\t\tTXT\t\"$r->{'note'}\"\n"; }; 
    
        my $ret = Utils::generateOutput($v->{'outputfile'}, \@rows, \&header, \&record, undef, $v);
        return $ret;
    }
    1;