From 56946237551518b0184c857762d441435eb1509a Mon Sep 17 00:00:00 2001 From: Matthias Andree Date: Sat, 17 Mar 2007 11:12:29 +0000 Subject: Add delete-later, kindly donated by Carsten Ralle/Yoo GmbH, Germany. svn path=/branches/BRANCH_6-3/; revision=5051 --- contrib/delete-later | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 contrib/delete-later (limited to 'contrib/delete-later') diff --git a/contrib/delete-later b/contrib/delete-later new file mode 100644 index 00000000..50c705c9 --- /dev/null +++ b/contrib/delete-later @@ -0,0 +1,56 @@ +#!/usr/bin/expect -f + +# MySQL database connection settings +set CRDB_host localhost +set CRDB_DB test +set CRDB_username root +set CRDB_password root + +# set eiter one to 1 for verbose output +log_user 0 +set comments 0 + +package require mysqltcl + +# connect to MySQL database +set handle [::mysql::connect -host $CRDB_host -user $CRDB_username -password $CRDB_password] + +# get server/usernames to clean up +set userlist [::mysql::sel $handle "SELECT UserID, server, username, password, retaindays from $CRDB_DB.fetchmail_user" -flatlist] + +# loop through all users in database +foreach {userid server username password days} $userlist { + if {$comments==1} { send_user "\r\nWorking on accound #$userid\r\n*******************************\r\n" } + eval spawn telnet -l fetchmail_cleanup $server 110 + expect "ready" + send "USER $username\r" + expect "password" + send "PASS $password\r" + expect "OK" + send "STAT\r" + expect "+OK " + expect -re "\[0-9]* " + set anz $expect_out(0,string) + if {$comments==1} { send_user "message count: $anz \r\n" } + set i 0 + while { $i < $anz } { + incr i + send "UIDL $i\r" + expect -re "\\\+OK $i \(.*\)\r" + set uid $expect_out(1,string) + ::mysql::exec $handle "insert ignore into $CRDB_DB.fetchmail values ($userid,'$uid',now());" + set age [::mysql::sel $handle "SELECT DATEDIFF(now(),Fetchdate) from $CRDB_DB.fetchmail where UserID=$userid and UID='$uid'" -list] + if {$comments==1} { send_user "Message #$i: UID: $uid , age: $age \r\n" } + if {$age > $days} { + send "DELE $i\r" + expect "deleted" + if {$comments==1} { send_user "Message $i deleted.\r\n" } + } + } + send "quit\r" + expect "signing off" + ::mysql::exec $handle "delete from $CRDB_DB.fetchmail where DATEDIFF(now(),Fetchdate)>($days*2) and UserID=$userid;" +} +::mysql::close $handle +exit + -- cgit v1.2.3