aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorPasha <pasha@member.fsf.org>2024-01-20 10:09:23 +0000
committerPasha <pasha@member.fsf.org>2024-01-20 10:09:23 +0000
commit76669f6c298bcf3f69a0e1df5c524a7cff3e367d (patch)
tree9704c3470c1f3ca91510d9af01b8e8eb81969ed9 /scripts
downloadnetusemod-master.tar.gz
netusemod-master.tar.bz2
initial commitHEADmaster
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/mail_format.sh51
-rwxr-xr-xscripts/process_incoming.pl82
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);
+}