aboutsummaryrefslogtreecommitdiffstats
path: root/.gitignore
blob: 110faeb22f2d143bf35a199df361f677f26ff63c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
*~
#*#
ABOUT-NLS
aclocal.m4
autobuild/
autom4te.cache
build*
build*/
compile
config.guess
config.h.in
config.rpath
config.sub
configure
cscope.out
depcomp
dox/
install-sh
m4/
Makefile.in
missing
mkinstalldirs
py-compile
tags
ylwrap
po/stamp-po
rcfile_l.c
rcfile_y.c
rcfile_y.h
olor: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
#!/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