rocksolid-light/Rocksolid_Light/tools/nocem/nocemlist.php

108 lines
3.5 KiB
PHP
Executable File

#!/usr/bin/php
<?php
include "nocemlist.inc.php";
$newspam = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($spamdir));
$count = 0;
$nocem_list = array();
$nocem_head = array();
foreach($newspam as $spam) {
if(is_dir($spam)) {
continue;
}
$spam_lines = file($spam);
$lines = 0;
$is_header = 1;
foreach($spam_lines as $response) {
if (trim($response) == "" && $lines > 0) {
break;
}
if ($is_header == 1) {
$lines ++;
$response = str_replace("\t", " ", $response);
// Find article date
if (stripos($response, "Date: ") === 0) {
$date = explode(': ', $response);
}
// Get overview data
if (stripos($response, "Message-ID: ") === 0) {
$id = explode(': ', $response);
}
if (stripos($response, "From: ") === 0) {
$sender = explode(': ', $response, 2);
}
if (stripos($response, "Subject: ") === 0) {
$subject = explode('Subject: ', $response, 2);
}
if (stripos($response, "Newsgroups: ") === 0) {
$newsgroups = explode('Newsgroups: ', $response);
}
}
}
$nocem_list[] = "# Sender: ".trim($sender[1])."\n# Date: ".trim($date[1])."\n# Subject: ".trim($subject[1])."\n".trim($id[1])." ".trim($newsgroups[1])."\n";;
$count++;
}
$nocem_file = fopen($nocem, "w+");
$header_file = fopen($headerdat, "w+");
$hashtail = hash('crc32', $domain.$organization.$from);
$thishash = hash('crc32', serialize($nocem_list)).$hashtail;
if($count < 2) {
$article = "article";
} else {
$article = "articles";
}
fwrite($header_file, "Message-ID: <$thishash@$domain>\n");
if(isset($followup_to)) {
fwrite($header_file, "Followup-To: $followup_to\n");
}
fwrite($header_file, "From: $from\n");
fwrite($header_file, "Newsgroups: $spamgroup\n");
fwrite($header_file, "Subject: @@NCM NoCeM notice $thishash $type ($count $article)\n");
fwrite($header_file, "Content-Type: text/plain; charset=utf-8; format=flowed\n");
fwrite($header_file, "Content-Transfer-Encoding: 8bit\n");
fwrite($header_file, "Organization: $organization\n");
fclose($header_file);
fwrite($nocem_file, "You may use this for hiding articles using NoCeM.\n");
fwrite($nocem_file, "$scope.\n");
fwrite($nocem_file, "This list is generated by $from_email.\n\n");
fwrite($nocem_file, "This message was signed using the following key:\n");
fwrite($nocem_file, "$signing_key\n\n");
fwrite($nocem_file, "The GPG key needed to verify the signature of cancels\n");
fwrite($nocem_file, "issued by $from_email is available at:\n");
fwrite($nocem_file, "$key_location\n\n");
fwrite($nocem_file, $statement."\n\n");
fwrite($nocem_file, "For information contact $contact.\n\n");
fwrite($nocem_file, "@@BEGIN NCM HEADERS\n");
fwrite($nocem_file, "Version: 0.93\n");
fwrite($nocem_file, "Issuer: $from_email\n");
fwrite($nocem_file, "Type: $type\n");
fwrite($nocem_file, "Action: hide\n");
fwrite($nocem_file, "Count: ".$count."\n");
fwrite($nocem_file, "Notice-ID: ".$thishash."\n");
fwrite($nocem_file, "@@BEGIN NCM BODY\n");
foreach($nocem_list as $list) {
fwrite($nocem_file, $list);
}
fwrite($nocem_file, "@@END NCM BODY");
fclose($nocem_file);
// Create nocempost.sh if it is older than config
if($create_post) {
file_put_contents($nocempost_filename, $nocempost);
chmod($nocempost_filename, 0700);
}
?>