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 | |
download | netusemod-master.tar.gz netusemod-master.tar.bz2 |
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/mail_format.sh | 51 | ||||
-rwxr-xr-x | scripts/process_incoming.pl | 82 |
2 files changed, 133 insertions, 0 deletions
diff --git a/scripts/mail_format.sh b/scripts/mail_format.sh new file mode 100755 index 0000000..79073fe --- /dev/null +++ b/scripts/mail_format.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# 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/>. + +TMPFILE=$1 + +FALLBACK_NEWSGROUP='test.newsgroup' +ADMIN_APPROVAL="NetUseMod Approval Key <YOU_APPROVAL_KEY_EMAIL@YOUR_DOMAIN>" +PATH_SUFFIX="netusemod.YOUR_DOMAIN!robomod!not-for-mail" + +post_message() { + echo Path: "$PATH_SUFFIX" + cat $TMPFILE \ + | formail -f -a "Newsgroups: $FALLBACK_NEWSGROUP" \ + -I Path: \ + -I X-Moderate-For: \ + -I Return-Path: \ + -I X-Mailer: \ + -I "X-400-Received:" \ + -I Received: \ + -I "From " \ + -a "Approved: $ADMIN_APPROVAL" \ + -a "X-SCRM-Policy: https://YOUR_DOMAIN/" \ + -a "X-SCRM-Info-1: Send submissions to YOUR_USER@YOUR_DOMAIN" \ + -a "X-SCRM-Info-2: Send technical complaints to YOUR_USER@YOUR_DOMAIN" \ + -a "X-SCRM-Info-3: Send complaints about policy to YOUR_USER@YOUR_DOMAIN" \ + -a "X-Comment: moderators do not necessarily agree or disagree with this article." \ + -a "X-Robomod: NETUSEMOD, YOUR_USER@YOUR_DOMAIN" \ + -a "X-Moderation-1: NETUSEMOD moderation tool" \ + -a "X-Moderation-2: See https://YOUR_DOMAIN/" \ + -I Lines: \ + -I Cc: \ + -I Status: + +} + +post_message; 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); +} |