# Local defines # The filter_hub() subroutine should # # usage example: # ============== # BEGIN{ require "filter-hub.pl" } # sub filter() { # my $r=filter_hub(); # return $r if( length($r)>0 ); # ...some other functions... # } # sub process_pkt{} # sub after_unpack{} # sub before_pack{} # sub pkt_done{} # sub scan{} # sub route{} # sub hpt_exit{} # ============== #use strict; # predefined variables #my($fromname, $toname, $fromaddr, $toaddr, $subject, $date, $text, $attr); #my($secure, $pktname, $rc, $res, $area, $pktfrom, $addr, $from); #my($kill, $change, $flavour); # My global variables sub filter_hub { if ($DEBUG_MODE==1) { w_log('1','filter-hub.pl: filter_hub()'); } # EchoMail Processing if (defined($area)) { w_log('J','No checking for echomail!'); return ''; } # Validate netmail routing w_log('L',"Netmail: From [$fromaddr] to [$toaddr]"); # Check if Netmail is to me or a point of mine if (grep(/^$toaddr$/,@{$config{addr}})) { w_log('1',"Netmail: To the HUB address [$toaddr] (To:$toname <- From:$fromname)."); # Ping messages if ($toname =~ /^ping$/i) { w_log('L',"Netmail: PING from [$fromaddr]."); if ($attr & $MSG_RRCT) { putMsgInArea('BADMAIL',$fromname,$toname,$fromaddr,$toaddr,$subject,$date,($MSG_SENT | $MSG_READ | $MSG_PRIVATE), "hpt> Ping request with RRC\r".$text,0); if ($DEBUG_MODE) { return ''; } $kill = 1; return 'Ping request with RRC'; } $text =~ s/\r\x01/\r\@/gs; $text =~ s/^\x01/\@/s; $time = localtime; $text = < $toname request with RRC\r" . $text, 0); if ($DEBUG_MODE) { return ''; } $kill = 1; return "$toname request with RRC"; } if (lc($toname) eq 'filefix') { putMsgInArea('robots',$fromname,$toname,$fromaddr,$toaddr,$subject,$date,($MSG_PRIVATE), $text, 0); w_log('L',"Netmail: *FIX. Copied to robots [$fromaddr]"); $newhtick = 1; $kill = 1; } # Messages to *fix are OK return ''; } elsif ($fromname =~ /^rexfix$/i) { w_log('L',"Netmail: From REXFIX. [$fromaddr]"); # Messages from rexfix are OK return ''; } elsif ($toname =~ /^(coordinator)$/i) { w_log('L',"Netmail: MAKENL Processing. [$fromaddr] ($attr)"); if ($ROUTE_NOTICE) { putMsgInArea($ROUTE_NOTICE,$fromname,$toname,$fromaddr,$toaddr,$subject,$date,($MSG_READ|$MSG_SENT), add_tz("Unable to deliver Netmail\rhpt> Unprotected message from unlisted system.\r\r".$text),0); $newecho = 1; } if ($DEBUG_MODE) { return ''; } $kill = 1; return "$toname reply from MakeNL"; } elsif ($toname =~ /^$FILTER_FROM$/i) { w_log('L',"Netmail: Message to me, how nice... [$fromaddr] ($attr)"); if ($ROUTE_NOTICE) { putMsgInArea($ROUTE_NOTICE,$fromname,$toname,$fromaddr,$toaddr,$subject,$date,($MSG_READ|$MSG_SENT), add_tz("I have friends!\rhpt> Netmail to me on the hub.\r\r".$text),0); $newecho = 1; } # Messages to the Robot are OK return ''; } else { if (($attr & $MSG_RREQ) || ($attr & $MSG_RAUD)) { w_log('L',"Netmail: RRQ ARQ."); receipt($fromaddr, $toaddr, $fromname, $toname, $subject, $date); } w_log('L',"Netmail: To user on Hub - but nobody here? [$attr]"); bounce($fromname,$fromaddr,$toname,$toaddr,$date,$subject,$text,'Sorry, the HUB is unattended',$toaddr); if ($DEBUG_MODE) { return ''; } $kill = 1; return "Message to HUB"; } } return ''; } # ======================================================================== # local functions # ======================================================================== sub receipt { if ($DEBUG_MODE==1) { w_log('1',"filter-hub.pl: receipt()"); } my($fromaddr,$toaddr,$fromname,$toname,$subject,$date) = @_; my($text); $text = <