2006-08-14 06:16:55 +00:00
#!/usr/bin/php -q
< ? /*
2008-04-06 19:45:09 +00:00
LibreSSL - CAcert web application
Copyright ( C ) 2004 - 2008 CAcert Inc .
2006-08-14 06:16:55 +00:00
2008-04-06 19:45:09 +00:00
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; version 2 of the License .
2006-08-14 06:16:55 +00:00
2008-04-06 19:45:09 +00:00
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
2006-08-14 06:16:55 +00:00
2008-04-06 19:45:09 +00:00
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
2006-08-14 06:16:55 +00:00
*/
include_once ( " /home/cacert/www/includes/mysql.php " );
$days = array ( " 1 " => " 3 " , " 15 " => " 2 " , " 30 " => " 1 " , " 45 " => " 0 " );
foreach ( $days as $day => $warning )
{
$query = " SELECT `emailcerts`.`id`,`users`.`fname`,`users`.`lname`,`users`.`email`,`emailcerts`.`memid`,
2006-11-23 22:22:31 +00:00
`emailcerts` . `subject` , `emailcerts` . `crt_name` , `emailcerts` . `CN` ,
2006-08-14 06:16:55 +00:00
( UNIX_TIMESTAMP ( `emailcerts` . `expire` ) - UNIX_TIMESTAMP ( NOW ())) / 86400 as `daysleft`
FROM `users` , `emailcerts`
WHERE UNIX_TIMESTAMP ( `emailcerts` . `expire` ) - UNIX_TIMESTAMP ( NOW ()) > - 7 * 86400 and
UNIX_TIMESTAMP ( `emailcerts` . `expire` ) - UNIX_TIMESTAMP ( NOW ()) < $day * 86400 and
`emailcerts` . `renewed` = 0 and `emailcerts` . `warning` <= '$warning' and
`emailcerts` . `revoked` = 0 and `users` . `id` = `emailcerts` . `memid` " ;
$res = mysql_query ( $query );
while ( $row = mysql_fetch_assoc ( $res ))
{
if ( $row [ 'subject' ] == " " )
{
2006-11-23 22:22:31 +00:00
$row [ 'crt_name' ] = str_replace ( " ../ " , " www/ " , $row [ 'crt_name' ]);
$row [ 'crt_name' ] = " /home/cacert/ " . $row [ 'crt_name' ];
2006-08-14 06:16:55 +00:00
$subject = `openssl x509 -in '$row[crt_name]' -text -noout|grep Subject:` ;
$bits = explode ( " / " , $subject );
foreach ( $bits as $val )
{
$sub = explode ( " = " , trim ( $val ));
if ( $sub [ '0' ] == " emailAddress " )
{
2006-11-23 22:22:31 +00:00
$row [ 'subject' ] = " /CN= " . $row [ 'CN' ] . " /emailAddress= " . $sub [ '1' ];
2006-08-14 06:16:55 +00:00
break ;
}
}
}
2006-11-23 22:22:31 +00:00
if ( $row [ 'subject' ] == " " )
$row [ 'subject' ] = " /CN= " . $row [ 'CN' ];
2006-08-16 09:27:39 +00:00
$row [ 'daysleft' ] = ceil ( $row [ 'daysleft' ]);
2006-08-14 06:16:55 +00:00
$body = sprintf ( _ ( " Hi %s " ), $row [ 'fname' ]) . " , \n \n " ;
2007-10-10 09:13:32 +00:00
$body .= _ ( " You are receiving this email as you are the listed contact for: " ) . " \n \n " ;
2006-08-14 06:16:55 +00:00
$body .= $row [ 'subject' ] . " \n \n " ;
$body .= sprintf ( _ ( " Your certificate is set to expire in approximately %s days time, you can renew this by going to the following URL: " ), $row [ 'daysleft' ]) . " \n \n " ;
$body .= " https://www.cacert.org/account.php?id=5 \n \n " ;
$body .= _ ( " Best Regards " ) . " \n " . _ ( " CAcert Support " );
sendmail ( $row [ 'email' ], " [CAcert.org] " . _ ( " Your Certificate is about to expire " ), $body , " support@cacert.org " , " " , " " , " CAcert Support " );
echo $row [ 'fname' ] . " " . $row [ 'lname' ] . " < " . $row [ 'email' ] . " > (memid: " . $row [ 'memid' ] . " Subj: " . $row [ 'subject' ] . " timeleft: " . $row [ 'daysleft' ] . " ) \n " ;
$query = " update `emailcerts` set `warning`=' " . ( $warning + 1 ) . " ' where `id`=' " . $row [ 'id' ] . " ' " ;
mysql_query ( $query );
}
}
foreach ( $days as $day => $warning )
{
$query = " SELECT `domaincerts`.`id`, `users`.`fname`, `users`.`lname`, `users`.`email`,
`domains` . `memid` , `domaincerts` . `subject` , `domaincerts` . `crt_name` ,
`domaincerts` . `CN` ,
( UNIX_TIMESTAMP ( `domaincerts` . `expire` ) - UNIX_TIMESTAMP ( NOW ())) / 86400 AS `daysleft`
FROM `users` , `domaincerts` , `domlink` , `domains`
WHERE UNIX_TIMESTAMP ( `domaincerts` . `expire` ) - UNIX_TIMESTAMP ( NOW ()) > - 7 * 86400 AND
UNIX_TIMESTAMP ( `domaincerts` . `expire` ) - UNIX_TIMESTAMP ( NOW ()) < $day * 86400 AND
`domaincerts` . `renewed` = 0 AND `domaincerts` . `warning` <= '$warning' AND
`domaincerts` . `revoked` = 0 AND `users` . `id` = `domains` . `memid` AND
`domlink` . `certid` = `domaincerts` . `id` AND `domains` . `id` = `domlink` . `domid` " ;
$res = mysql_query ( $query );
while ( $row = mysql_fetch_assoc ( $res ))
{
2006-11-23 22:22:31 +00:00
if ( $row [ 'subject' ] == " " )
$row [ 'subject' ] = $row [ 'CN' ];
2006-08-16 09:27:39 +00:00
$row [ 'daysleft' ] = ceil ( $row [ 'daysleft' ]);
2006-08-14 06:16:55 +00:00
$body = sprintf ( _ ( " Hi %s " ), $row [ 'fname' ]) . " , \n \n " ;
2007-10-10 09:13:32 +00:00
$body .= _ ( " You are receiving this email as you are the listed contact for: " ) . " \n \n " ;
2006-08-16 18:34:25 +00:00
$body .= $row [ 'subject' ] . " \n \n " ;
2006-08-14 06:16:55 +00:00
$body .= sprintf ( _ ( " Your certificate is set to expire in approximately %s days time, you can renew this by going to the following URL: " ), $row [ 'daysleft' ]) . " \n \n " ;
$body .= " https://www.cacert.org/account.php?id=12 \n \n " ;
$body .= _ ( " Best Regards " ) . " \n " . _ ( " CAcert Support " );
sendmail ( $row [ 'email' ], " [CAcert.org] " . _ ( " Your Certificate is about to expire " ), $body , " support@cacert.org " , " " , " " , " CAcert Support " );
echo $row [ 'fname' ] . " " . $row [ 'lname' ] . " < " . $row [ 'email' ] . " > (memid: " . $row [ 'memid' ] . " Subj: " . $row [ 'CN' ] . " timeleft: " . $row [ 'daysleft' ] . " ) \n " ;
$query = " update `domaincerts` set `warning`=' " . ( $warning + 1 ) . " ' where `id`=' " . $row [ 'id' ] . " ' " ;
mysql_query ( $query );
}
}
?>