Вызов GPG и отправка зашифрованной почты
В листинге 2 показан РНР-сценарий для вызова GPG и отправки зашифрованной почты
Листинг 2. send_private_mail .php — РНР-сценарий для вызова GPG и отправки зашифрованной почты
<?php
// Создание коротких имен переменных $from = $HTTP_POST_VARS['from']; $title = $HTTP_POST_VARS['title']; $body = $HTTP_POST_VARS['body']/
$to_email = 'chief@localhost';
// Укажите gpg, где находится набор ключей
// В данной системе начальным каталогом пользователя nobody является /tmp/
putenv('GNUPGHOME=/tmp/.gnupg');
// Создание уникального имени файла
$infile = tempnam('', 'pgp');
$outfile = $infile.'.asc';
// Запись текста, введенного пользователем в файл
$fp = fopen($infile, 'w');
fwrite($fp, $body);
fclose($fp);
// Настройка параметров команды
Scommand = "/usr/local/bin/gpg a \\
-—recipient 'Luke Welling <luke@tangledweb.com.au>' \\
-—encrypt o $outfile $infile"/
// Выполнение команды gpg
system($command, $result);
// Удаление незашифрованного временного файла
unlink($infile);
if($result==0)
{
$fp = fopen($outfile, 'r');
if (!$fp| Ifilesize ($outfile)==0)
{
$result = 1;
}
else
{
// Чтение зашифрованного файла
$contents = fread ($fp, filesize ($outfile));
// Удаление зашифрованного временного файла
unlink($outfile);
mail($to_email, $title, $contents, "From: $from\n");
echo '<h1>Сообщение отправлено</h1>
<р>Ваше сообщение зашифровано и отправлено.</р>
<р>Спасибо.'<р>';
}
}
if ($result!=0)
{
echo '<hl>Error:</hl>
<р>Ваше сообщение не может быть зашифровано,
поэтому оно не отправлялось.</р>
<р>Извините.</р?';
}
?>