1. Added msg command to allow the changing of To, From, Subject and so on the
[spider.git] / cmd / msg.pl
diff --git a/cmd/msg.pl b/cmd/msg.pl
new file mode 100644 (file)
index 0000000..0f68779
--- /dev/null
@@ -0,0 +1,98 @@
+#
+# a universal message mangling routine which allows the sysop
+# tinker with the properties of a message
+#
+# Copyright (c) 1999 Dirk Koopman G1TLH
+#
+# $Id$
+#
+
+my ($self, $line) = @_;
+return (1, $self->msg('e5')) if $self->priv < 9;
+
+# a line is cmd, msgno, data 
+my @f = split /\s+/, $line, 3;
+my $cmd;
+my $msgno;
+my $data;
+
+#$DB::single = 1;
+
+$cmd = shift @f if $f[0] =~ /^\w+$/;
+$msgno = shift @f if $f[0] =~ /^\d+$/;
+
+# handle queuing
+if ($cmd =~ /^qu/i && !$msgno) {
+       DXMsg::queue_msg(0);
+       return (1, $self->msg('msg1'));
+}
+if ($cmd =~ /^qu/i) {
+       DXMsg::queue_msg(1);
+       return (1, $self->msg('msg2'));
+}
+
+return (1, $self->msg('msgu')) unless $cmd && $msgno;
+$data = shift @f;
+
+# get me message
+my $ref = DXMsg::get($msgno);
+return (1, $self->msg('m13', $msgno)) unless $ref;
+
+my $old;
+my $new;
+my $m;
+if ($cmd =~ /^to/i) {
+    $m = 'To';
+       $old = $ref->to;
+       $new = $ref->to(uc $data);
+} elsif ($cmd =~ /^fr/i) {
+    $m = 'From';
+       $old = $ref->from;
+       $new = $ref->from(uc $data);
+} elsif ($cmd =~ /^pr/i) {
+    $m = 'Msg Type';
+       $old = $ref->private ? 'P' : 'B';
+       $new = 'P';
+       $ref->private(1);
+} elsif ($cmd =~ /^nop/i || $cmd =~ /^bu/i) {
+    $m = 'Msg Type';
+       $old = $ref->private ? 'P' : 'B';
+       $new = 'B';
+       $ref->private(0);
+} elsif ($cmd =~ /^rr/i) {
+    $m = 'RR Req';
+       $old = $ref->rrreq ? 'RR Req' : 'No RR Req';
+       $new = 'RR Req';
+       $ref->rrreq(1);
+} elsif ($cmd =~ /^norr/i) {
+    $m = 'RR Req';
+       $old = $ref->rrreq ? 'RR Req' : 'No RR Req';
+       $new = 'No RR Req';
+       $ref->rrreq(0);
+} elsif ($cmd =~ /^ke/i) {
+    $m = 'Keep';
+       $old = $ref->keep ? 'Keep' : 'No Keep';
+    $new = 'Keep';
+       $ref->keep(1);
+} elsif ($cmd =~ /^noke/i) {
+    $m = 'Keep';
+       $old = $ref->keep ? 'Keep' : 'No Keep';
+    $new = 'No Keep';
+    $ref->keep(0);
+} elsif ($cmd =~ /^su/i) {
+    $m = 'Subject';
+    $old = $ref->subject;
+       $new = $ref->subject($data);
+} elsif ($cmd =~ /^wa/i) {
+    $m = 'Wait Time';
+       $old = cldatetime($ref->waitt) || 'None';
+       $new = 'None'; 
+    $ref->waitt(0);
+} 
+
+# store changes and return     
+$ref->store( [ $ref->read_msg_body() ] );
+return(1, $self->msg('msg3', $msgno, $m, $old, $new));
+
+
+