Moved smtp-server.factor to smtp/server/server.factor

db4
Slava Pestov 2008-02-07 01:05:28 -06:00
parent dad715e7b0
commit 386d93b6e5
1 changed files with 0 additions and 68 deletions

View File

@ -1,68 +0,0 @@
! Copyright (C) 2007 Elie CHAFTARI
! See http://factorcode.org/license.txt for BSD license.
! Usage: 8889 start-server
! $ telnet 127.0.0.1 8889
! Trying 127.0.0.1...
! Connected to localhost.
! Escape character is '^]'.
! 220 hello
! EHLO
! 220 and..?
! MAIL FROM: <here@mail.com>
! 220 OK
! RCPT TO: <there@mail.com>
! 220 OK
! Hi
! 500 ERROR
! DATA
! 354 Enter message, ending with "." on a line by itself
! Hello I am still waiting for your call
! Thanks
! .
! 220 OK
! QUIT
! bye
! Connection closed by foreign host.
USING: combinators kernel prettyprint io io.server sequences
namespaces ;
SYMBOL: data-mode
: process ( -- )
readln {
{ [ [ dup "HELO" head? ] keep "EHLO" head? or ] [
"220 and..?\r\n" write flush t
] }
{ [ dup "QUIT" = ] [
"bye\r\n" write flush f
] }
{ [ dup "MAIL FROM:" head? ] [
"220 OK\r\n" write flush t
] }
{ [ dup "RCPT TO:" head? ] [
"220 OK\r\n" write flush t
] }
{ [ dup "DATA" = ] [
data-mode on
"354 Enter message, ending with \".\" on a line by itself\r\n"
write flush t
] }
{ [ dup "." = data-mode get and ] [
data-mode off
"220 OK\r\n" write flush t
] }
{ [ data-mode get ] [ t ] }
{ [ t ] [
"500 ERROR\r\n" write flush t
] }
} cond nip [ process ] when ;
: start-server ( port -- )
"Starting SMTP server on port " write dup . flush
internet-server "smtp-server" [
60000 stdio get set-timeout
"220 hello\r\n" write flush
process
] with-server ;