X-Git-Url: http://git.megabrutal.com/?p=mgsmtp.git;a=blobdiff_plain;f=Listener.pas;h=fd607c95772ebd22eb51315e63521c47c98cd703;hp=fc92edd86a77c31ac0a808354e03fc3710940c71;hb=HEAD;hpb=f70bfb8a7f2c72758be721b78a7e9f33321dca21 diff --git a/Listener.pas b/Listener.pas index fc92edd..fd607c9 100644 --- a/Listener.pas +++ b/Listener.pas @@ -42,6 +42,8 @@ type protected procedure HandleClient(Connection: TTCPConnection); override; procedure ReceiveEMailData(TCP: TTCPRFCConnection; Response: TRFCReply; SpoolObject: TSpoolObjectCreator); + public + function StartListen: boolean; end; @@ -132,10 +134,18 @@ constructor TMgSMTPListener.Create(const Address: string; Port: word); begin { Request connection objects with support for RFC-style commands & responses. } inherited Create(Address, Port, NET_TCP_RFCSUPPORT); - Logger.AddLine('Server', 'Listening on address: ' + Address + ':' + IntToStr(Port)); end; +function TMgSMTPListener.StartListen: boolean; +begin + Result:= inherited StartListen; + if Result then + Logger.AddLine('Server', 'Listening on address: ' + GetSockAddrStr) + else + Logger.AddLine('Server', 'Failed to listen on address: ' + GetSockAddrStr); +end; + procedure TMgSMTPListener.HandleClient(Connection: TTCPConnection); { This is the procedure that actually handles the clients. It receives an object that manages the established connection in the parameter. @@ -220,7 +230,9 @@ begin if (Length(Cmd) = 0) or (not ReadSucceeded) or UnexpectedFail then { Nothing. } - else if (Cmd = 'GET') or (Cmd = 'HEAD') or (Cmd = 'POST') then begin + else if (Cmd = 'GET') or (Cmd = 'HEAD') or (Cmd = 'PUT') or (Cmd = 'POST') + or (Cmd = 'DELETE') or (Cmd = 'CONNECT') or (Cmd = 'OPTIONS') + or (Cmd = 'PATCH') or (Cmd = 'TRACE') then begin SendAndLogResponse(SMTP_R_SERVICE_NA, 'Please learn to speak SMTP for I won''t speak HTTP. Stop abusing my service!'); UnexpectedFail:= true; end