aboutsummaryrefslogtreecommitdiff
path: root/scripts/process_incoming.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/process_incoming.pl')
-rwxr-xr-xscripts/process_incoming.pl82
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);
+}