X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fmsg.pl;fp=cmd%2Fmsg.pl;h=0f68779b61d70803a34f4736a5607e2b7fe250af;hb=8aa1d223307c50d8bbaa0ed4ef915f8c7365bc6e;hp=0000000000000000000000000000000000000000;hpb=1edb247cb81f40501124306d965aed2aebaa191a;p=spider.git diff --git a/cmd/msg.pl b/cmd/msg.pl new file mode 100644 index 00000000..0f68779b --- /dev/null +++ b/cmd/msg.pl @@ -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)); + + +