diff options
author | Pasha <pasha@member.fsf.org> | 2024-01-20 10:09:23 +0000 |
---|---|---|
committer | Pasha <pasha@member.fsf.org> | 2024-01-20 10:09:23 +0000 |
commit | 76669f6c298bcf3f69a0e1df5c524a7cff3e367d (patch) | |
tree | 9704c3470c1f3ca91510d9af01b8e8eb81969ed9 /scripts/process_incoming.pl | |
download | netusemod-master.tar.gz netusemod-master.tar.bz2 |
Diffstat (limited to 'scripts/process_incoming.pl')
-rwxr-xr-x | scripts/process_incoming.pl | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/scripts/process_incoming.pl b/scripts/process_incoming.pl new file mode 100755 index 0000000..27232f5 --- /dev/null +++ b/scripts/process_incoming.pl @@ -0,0 +1,82 @@ +#!/usr/bin/perl + +# NetUseMod is a program to moderate Usenet posts via web interface. +# Copyright (C) 2024 Salahuddin <salahuddin@member.fsf.org> +# +# 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 <https://www.gnu.org/licenses/>. + +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); +} |