Quellcode durchsuchen

bugfix: fixed illegal date filter in garbage.pl

rajven vor 5 Jahren
Ursprung
Commit
32bd80f413
1 geänderte Dateien mit 40 neuen und 50 gelöschten Zeilen
  1. 40 50
      scripts/garbage.pl

+ 40 - 50
scripts/garbage.pl

@@ -50,6 +50,7 @@ my $dhcp_networks = new Net::Patricia;
 my $now = DateTime->now(time_zone=>'local');
 my $now = DateTime->now(time_zone=>'local');
 $now->set(day=>1);
 $now->set(day=>1);
 my $month_start=$dbh->quote($now->ymd("-")." 00:00:00");
 my $month_start=$dbh->quote($now->ymd("-")." 00:00:00");
+
 my $month_dur = DateTime::Duration->new( months => 1 );
 my $month_dur = DateTime::Duration->new( months => 1 );
 my $next_month = $now + $month_dur;
 my $next_month = $now + $month_dur;
 $next_month->set(day=>1);
 $next_month->set(day=>1);
@@ -110,24 +111,22 @@ if ($dhcp_networks->match_string($row->{ip})) {
     }
     }
 }
 }
 
 
+$now = DateTime->now(time_zone=>'local');
+
+my $day_dur = DateTime::Duration->new( days => $history_dhcp );
+my $clean_date = $now - $day_dur;
+my $clean_str = $dbh->quote($clean_date->ymd("-")." 00:00:00");
+
 #clean dhcp log
 #clean dhcp log
-my $clean_dhcp_log = time()- $history_dhcp*3600*24;
-my ($sec,$min,$hour,$day,$month,$year,$zone) = localtime($clean_dhcp_log);
-$month++;
-$year += 1900;
-my $clean_dhcp_log_str="$year-$month-$day";
-my $clean_dhcp_log_date=$dbh->quote($clean_dhcp_log_str);
-do_sql($dbh,"DELETE FROM dhcp_log WHERE `timestamp` < $clean_dhcp_log_date" );
-db_log_verbose($dbh,"Clean dhcp leases for all older that ".$clean_dhcp_log_str);
+do_sql($dbh,"DELETE FROM dhcp_log WHERE `timestamp` < $clean_str" );
+db_log_verbose($dbh,"Clean dhcp leases for all older that ".$clean_str);
 
 
 ##### clean old connections ########
 ##### clean old connections ########
-my $clean_con_time = time()-$connections_history*60*60*24;
-my ($sec,$min,$hour,$day,$month,$year,$zone) = localtime($clean_con_time);
-$month++;
-$year += 1900;
-my $clean_con_str="$year-$month-$day";
-my $clean_con_date=$dbh->quote($clean_con_str);
-$users_sql = "SELECT id FROM User_auth WHERE `last_found` < $clean_con_date and last_found>0";
+$day_dur = DateTime::Duration->new( days => $connections_history );
+$clean_date = $now - $day_dur;
+$clean_str = $dbh->quote($clean_date->ymd("-")." 00:00:00");
+
+$users_sql = "SELECT id FROM User_auth WHERE `last_found` < $clean_str and last_found>0";
 db_log_debug($dbh,$users_sql) if ($debug);
 db_log_debug($dbh,$users_sql) if ($debug);
 @users_auth=get_records_sql($dbh,$users_sql);
 @users_auth=get_records_sql($dbh,$users_sql);
 foreach my $row (@users_auth) {
 foreach my $row (@users_auth) {
@@ -162,60 +161,51 @@ do_sql($dbh,"DELETE FROM Unknown_mac WHERE mac='".mac_simplify($row->{mac})."'")
 
 
 ##### traffic detail ######
 ##### traffic detail ######
 
 
-my $clean_time = time()-$history*60*60*24;
-my ($sec,$min,$hour,$day,$month,$year,$zone) = localtime($clean_time);
-$month++;
-$year += 1900;
-my $clean_str="$year-$month-$day";
-my $clean_date=$dbh->quote($clean_str);
+$day_dur = DateTime::Duration->new( days => $history );
+$clean_date = $now - $day_dur;
+$clean_str = $dbh->quote($clean_date->ymd("-")." 00:00:00");
+
 db_log_verbose($dbh,"Clean traffic detail older that ".$clean_str);
 db_log_verbose($dbh,"Clean traffic detail older that ".$clean_str);
 #clean old traffic detail
 #clean old traffic detail
-do_sql($dbh,"DELETE FROM Traffic_detail WHERE `timestamp` < $clean_date" );
+do_sql($dbh,"DELETE FROM Traffic_detail WHERE `timestamp` < $clean_str" );
 
 
 ##### log  ######
 ##### log  ######
 
 
-$clean_time = time()-$history_log_day*60*60*24;
-my ($sec,$min,$hour,$day,$month,$year,$zone) = localtime($clean_time);
-$month++;
-$year += 1900;
-$clean_str="$year-$month-$day";
-$clean_date=$dbh->quote($clean_str);
+$day_dur = DateTime::Duration->new( days => $history_log_day );
+$clean_date = $now - $day_dur;
+$clean_str = $dbh->quote($clean_date->ymd("-")." 00:00:00");
+
 db_log_verbose($dbh,"Clean worklog older that ".$clean_str);
 db_log_verbose($dbh,"Clean worklog older that ".$clean_str);
-do_sql($dbh,"DELETE FROM syslog WHERE `timestamp` < $clean_date" );
+do_sql($dbh,"DELETE FROM syslog WHERE `timestamp` < $clean_str" );
 
 
 ##### syslog  ######
 ##### syslog  ######
 
 
-$clean_time = time()-$history_syslog_day*60*60*24;
-my ($sec,$min,$hour,$day,$month,$year,$zone) = localtime($clean_time);
-$month++;
-$year += 1900;
-$clean_str="$year-$month-$day";
-$clean_date=$dbh->quote($clean_str);
+$day_dur = DateTime::Duration->new( days => $history_syslog_day );
+$clean_date = $now - $day_dur;
+$clean_str = $dbh->quote($clean_date->ymd("-")." 00:00:00");
+
 db_log_verbose($dbh,"Clean syslog older that ".$clean_str);
 db_log_verbose($dbh,"Clean syslog older that ".$clean_str);
-do_sql($dbh,"DELETE FROM remote_syslog WHERE `date` < $clean_date" );
+do_sql($dbh,"DELETE FROM remote_syslog WHERE `date` < $clean_str" );
 
 
 ##### Traffic stats  ######
 ##### Traffic stats  ######
 
 
-$clean_time = time()-$history_trafstat_day*60*60*24;
-my ($sec,$min,$hour,$day,$month,$year,$zone) = localtime($clean_time);
-$month++;
-$year += 1900;
-$clean_str="$year-$month-$day";
-$clean_date=$dbh->quote($clean_str);
+$day_dur = DateTime::Duration->new( days => $history_trafstat_day );
+$clean_date = $now - $day_dur;
+$clean_str = $dbh->quote($clean_date->ymd("-")." 00:00:00");
+
 db_log_verbose($dbh,"Clean traffic statistics older that ".$clean_str);
 db_log_verbose($dbh,"Clean traffic statistics older that ".$clean_str);
-do_sql($dbh,"DELETE FROM User_stats WHERE `timestamp` < $clean_date" );
+do_sql($dbh,"DELETE FROM User_stats WHERE `timestamp` < $clean_str" );
 
 
 ##### Traffic stats full ######
 ##### Traffic stats full ######
 
 
 my $iptraf_history = $config_ref{traffic_ipstat_history} || 30;
 my $iptraf_history = $config_ref{traffic_ipstat_history} || 30;
-$clean_time = time()-$iptraf_history*60*60*24;
-my ($sec,$min,$hour,$day,$month,$year,$zone) = localtime($clean_time);
-$month++;
-$year += 1900;
-$clean_str="$year-$month-$day";
-$clean_date=$dbh->quote($clean_str);
+
+$day_dur = DateTime::Duration->new( days => $iptraf_history );
+$clean_date = $now - $day_dur;
+$clean_str = $dbh->quote($clean_date->ymd("-")." 00:00:00");
+
 db_log_verbose($dbh,"Clean traffic full statistics older that ".$clean_str);
 db_log_verbose($dbh,"Clean traffic full statistics older that ".$clean_str);
-do_sql($dbh,"DELETE FROM User_stats_full WHERE `timestamp` < $clean_date" );
+do_sql($dbh,"DELETE FROM User_stats_full WHERE `timestamp` < $clean_str" );
 
 
 #### clean unknown user ip
 #### clean unknown user ip
 do_sql($dbh,"DELETE FROM User_auth WHERE (mac is NULL or mac='') and deleted=1");
 do_sql($dbh,"DELETE FROM User_auth WHERE (mac is NULL or mac='') and deleted=1");