1#!/usr/bin/perl 2 3# Copyright 2005 Messiah College. All rights reserved. 4# Jason Long <jlong@messiah.edu> 5 6# Portions copyright (C) 2001 Morgan Stanley Dean Witter. 7# Portions written by Bennett Todd <bet@rahul.net> 8 9use strict; 10use warnings; 11 12package MySmtpServer; 13use base "MSDW::SMTP::Server"; 14 15sub new 16{ 17 my $class = shift; 18 my %args = @_; 19 my $self = bless \%args, $class; 20 $self->{"in"} = new IO::Handle; 21 $self->{"in"}->fdopen(fileno(STDIN), "r"); 22 $self->{"out"} = new IO::Handle; 23 $self->{"out"}->fdopen(fileno(STDOUT), "w"); 24 $self->{"out"}->autoflush; 25 $self->{"state"} = " accepted"; 26 return $self; 27} 28 29sub getline 30{ 31 my ($self) = @_; 32 local $/ = "\015\012"; 33 $/ = "\n" if ($self->{Translate}); 34 35 my $tmp = $self->{"in"}->getline; 36 if (not defined $tmp) 37 { 38 return $tmp; 39 } 40 if ($self->{debug}) 41 { 42 $self->{debug}->print($tmp); 43 } 44 $tmp =~ s/\n$/\015\012/ if ($self->{Translate}); 45 return $tmp; 46} 47 48sub print 49{ 50 my ($self, @msg) = @_; 51 my @transformed = $self->{Translate} ? 52 ( map { s/\015\012$/\n/; $_ } @msg ) : (@msg); 53 $self->{debug}->print(@transformed) if defined $self->{debug}; 54 return $self->{"out"}->print(@transformed); 55} 56 571; 58