#!/usr/bin/perl # NetUseMod is a program to moderate Usenet posts via web interface. # Copyright (C) 2024 Salahuddin # # 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, either version 3 of the License, or # (at your option) any later version. # # 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. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . use strict; use warnings; my $message_dir = 'YOUR_HOME_DIR/incoming_news/'; my $noreply_mail = 'no-reply@YOUR_DOMAIN'; my $send_rec_ack = 1; sub saveIncomingMessage { my $dir_location = shift; # $$ - The process number of the Perl running this script my $message_number = time . $$; my $filename = $dir_location . $message_number; my $incoming_message = ''; open(INCOMING_FILE, '>', $filename) or die $!; while (<>) { $incoming_message .= $_; print INCOMING_FILE; chop; } close(INCOMING_FILE); return $incoming_message; } sub parseFromAndSubject { my $message = shift; my $from = ''; my $subject = ''; my @message_array = split(/\n/, $message); foreach(@message_array) { # first empty line if(/^$/) { last; } if( /^From: / ) { $from = $_; $from=~ s/^From: //i; } elsif( /^Subject: / ) { $subject = $_; $subject =~ s/^Subject: //i; } } # trim $from =~ s/^\s+|\s+$//g; $subject =~ s/^\s+|\s+$//g; return ($from, $subject); } sub sendReceiveAck { my ($from, $subject) = @_; system('echo "Submission received." | mail -s "Re: ' . $subject . '" -r ' . $noreply_mail . ' \'' . $from . '\''); } # & needed to pass $_ my $incoming_message = &saveIncomingMessage($message_dir); #print "incoming_message: \n" . $incoming_message . "\n"; if ($send_rec_ack eq 1) { my ($from, $subject) = parseFromAndSubject($incoming_message); # TODO: check return value sendReceiveAck($from, $subject); }