based on reworked servercore.
This commit is contained in:
		
							parent
							
								
									50eb707f10
								
							
						
					
					
						commit
						db3e82a18e
					
				
							
								
								
									
										127
									
								
								BMAMail.project
									
									
									
									
									
								
							
							
						
						
									
										127
									
								
								BMAMail.project
									
									
									
									
									
								
							| @ -1,127 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <CodeLite_Project Name="BMAMail" Version="10.0.0" InternalType="Console"> | ||||
|   <Description/> | ||||
|   <Dependencies/> | ||||
|   <VirtualDirectory Name="src"> | ||||
|     <File Name="main.cpp"/> | ||||
|     <File Name="./BMAIMAPServer.h"/> | ||||
|     <File Name="./BMAIMAPSession.h"/> | ||||
|     <File Name="./BMAPOP3Server.h"/> | ||||
|     <File Name="./BMAPOP3Session.h"/> | ||||
|     <File Name="./BMASMTPServer.h"/> | ||||
|     <File Name="./BMASMTPSession.h"/> | ||||
|     <File Name="__SMTP_HELO.h"/> | ||||
|     <File Name="__SMTP_EHLO.h"/> | ||||
|     <File Name="__SMTP_AUTH.h"/> | ||||
|     <File Name="__SMTP_MAIL.h"/> | ||||
|     <File Name="__SMTP_RCPT.h"/> | ||||
|     <File Name="__SMTP_DATA.h"/> | ||||
|     <File Name="__SMTP_RSET.h"/> | ||||
|     <File Name="__SMTP_VRFY.h"/> | ||||
|     <File Name="__SMTP_NOOP.h"/> | ||||
|     <File Name="__SMTP_QUIT.h"/> | ||||
|     <File Name="SMTPService.h"/> | ||||
|     <File Name="SMTPSession.h"/> | ||||
|     <File Name="POP3Service.h"/> | ||||
|     <File Name="IMAPService.h"/> | ||||
|   </VirtualDirectory> | ||||
|   <Dependencies Name="Debug"/> | ||||
|   <Dependencies Name="Release"/> | ||||
|   <Settings Type="Executable"> | ||||
|     <GlobalSettings> | ||||
|       <Compiler Options="" C_Options="" Assembler=""> | ||||
|         <IncludePath Value="."/> | ||||
|       </Compiler> | ||||
|       <Linker Options=""> | ||||
|         <LibraryPath Value="."/> | ||||
|       </Linker> | ||||
|       <ResourceCompiler Options=""/> | ||||
|     </GlobalSettings> | ||||
|     <Configuration Name="Debug" CompilerType="GCC" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append"> | ||||
|       <Compiler Options="-g;-O0;-Wall" C_Options="-g;-O0;-Wall" Assembler="" Required="yes" PreCompiledHeader="" PCHInCommandLine="no" PCHFlags="" PCHFlagsPolicy="0"> | ||||
|         <IncludePath Value="."/> | ||||
|         <IncludePath Value="../ServerCore"/> | ||||
|         <IncludePath Value="../BMAMySQL"/> | ||||
|       </Compiler> | ||||
|       <Linker Options="" Required="yes"> | ||||
|         <LibraryPath Value="../Debug/ServerCore"/> | ||||
|         <LibraryPath Value="../Debug/BMAMySQL"/> | ||||
|         <Library Value="ServerCore"/> | ||||
|         <Library Value="BMAMySQL"/> | ||||
|       </Linker> | ||||
|       <ResourceCompiler Options="" Required="no"/> | ||||
|       <General OutputFile="$(IntermediateDirectory)/$(ProjectName)" IntermediateDirectory="./Debug" Command="./$(ProjectName)" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(IntermediateDirectory)" PauseExecWhenProcTerminates="yes" IsGUIProgram="no" IsEnabled="yes"/> | ||||
|       <BuildSystem Name="Default"/> | ||||
|       <Environment EnvVarSetName="<Use Defaults>" DbgSetName="<Use Defaults>"> | ||||
|         <![CDATA[]]> | ||||
|       </Environment> | ||||
|       <Debugger IsRemote="no" RemoteHostName="" RemoteHostPort="" DebuggerPath="" IsExtended="no"> | ||||
|         <DebuggerSearchPaths/> | ||||
|         <PostConnectCommands/> | ||||
|         <StartupCommands/> | ||||
|       </Debugger> | ||||
|       <PreBuild/> | ||||
|       <PostBuild/> | ||||
|       <CustomBuild Enabled="no"> | ||||
|         <RebuildCommand/> | ||||
|         <CleanCommand/> | ||||
|         <BuildCommand/> | ||||
|         <PreprocessFileCommand/> | ||||
|         <SingleFileCommand/> | ||||
|         <MakefileGenerationCommand/> | ||||
|         <ThirdPartyToolName>None</ThirdPartyToolName> | ||||
|         <WorkingDirectory/> | ||||
|       </CustomBuild> | ||||
|       <AdditionalRules> | ||||
|         <CustomPostBuild/> | ||||
|         <CustomPreBuild/> | ||||
|       </AdditionalRules> | ||||
|       <Completion EnableCpp11="no" EnableCpp14="no"> | ||||
|         <ClangCmpFlagsC/> | ||||
|         <ClangCmpFlags/> | ||||
|         <ClangPP/> | ||||
|         <SearchPaths/> | ||||
|       </Completion> | ||||
|     </Configuration> | ||||
|     <Configuration Name="Release" CompilerType="GCC" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append"> | ||||
|       <Compiler Options="-O2;-Wall" C_Options="-O2;-Wall" Assembler="" Required="yes" PreCompiledHeader="" PCHInCommandLine="no" PCHFlags="" PCHFlagsPolicy="0"> | ||||
|         <IncludePath Value="."/> | ||||
|         <Preprocessor Value="NDEBUG"/> | ||||
|       </Compiler> | ||||
|       <Linker Options="" Required="yes"/> | ||||
|       <ResourceCompiler Options="" Required="no"/> | ||||
|       <General OutputFile="$(IntermediateDirectory)/$(ProjectName)" IntermediateDirectory="./Release" Command="./$(ProjectName)" CommandArguments="" UseSeparateDebugArgs="no" DebugArguments="" WorkingDirectory="$(IntermediateDirectory)" PauseExecWhenProcTerminates="yes" IsGUIProgram="no" IsEnabled="yes"/> | ||||
|       <BuildSystem Name="Default"/> | ||||
|       <Environment EnvVarSetName="<Use Defaults>" DbgSetName="<Use Defaults>"> | ||||
|         <![CDATA[]]> | ||||
|       </Environment> | ||||
|       <Debugger IsRemote="no" RemoteHostName="" RemoteHostPort="" DebuggerPath="" IsExtended="no"> | ||||
|         <DebuggerSearchPaths/> | ||||
|         <PostConnectCommands/> | ||||
|         <StartupCommands/> | ||||
|       </Debugger> | ||||
|       <PreBuild/> | ||||
|       <PostBuild/> | ||||
|       <CustomBuild Enabled="no"> | ||||
|         <RebuildCommand/> | ||||
|         <CleanCommand/> | ||||
|         <BuildCommand/> | ||||
|         <PreprocessFileCommand/> | ||||
|         <SingleFileCommand/> | ||||
|         <MakefileGenerationCommand/> | ||||
|         <ThirdPartyToolName>None</ThirdPartyToolName> | ||||
|         <WorkingDirectory/> | ||||
|       </CustomBuild> | ||||
|       <AdditionalRules> | ||||
|         <CustomPostBuild/> | ||||
|         <CustomPreBuild/> | ||||
|       </AdditionalRules> | ||||
|       <Completion EnableCpp11="no" EnableCpp14="no"> | ||||
|         <ClangCmpFlagsC/> | ||||
|         <ClangCmpFlags/> | ||||
|         <ClangPP/> | ||||
|         <SearchPaths/> | ||||
|       </Completion> | ||||
|     </Configuration> | ||||
|   </Settings> | ||||
| </CodeLite_Project> | ||||
| @ -1 +0,0 @@ | ||||
| ./Debug/main.cpp.o | ||||
							
								
								
									
										24
									
								
								IMAPCommand.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								IMAPCommand.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| #ifndef __IMAPCommand_h__ | ||||
| # define __IMAPCommand_h__ | ||||
| 
 | ||||
| # include "Command.h" | ||||
| # include "TCPSession.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class IMAPCommand : public core::Command { | ||||
|        | ||||
|     public: | ||||
|       virtual int processCommand(std::string request, core::TCPSession *session, std::stringstream &data) override { | ||||
| 	 coreutils::PString parser(request); | ||||
| 	 return processCommand(parser, (IMAPSession &)*session, data);	  | ||||
|       } | ||||
| 
 | ||||
|       virtual int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {} | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										106
									
								
								IMAPService.h
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								IMAPService.h
									
									
									
									
									
								
							| @ -1,48 +1,88 @@ | ||||
| #ifndef __IMAPService_h__ | ||||
| #define __IMAPService_h__ | ||||
| 
 | ||||
| #include "Service.h" | ||||
| #include "TCPServer.h" | ||||
| #include "Exception.h" | ||||
| #include "__SMTP_AUTH.h" | ||||
| #include "__SMTP_DATA.h" | ||||
| #include "__SMTP_EHLO.h" | ||||
| #include "__SMTP_HELO.h" | ||||
| #include "__SMTP_MAIL.h" | ||||
| #include "__SMTP_NOOP.h" | ||||
| #include "__SMTP_QUIT.h" | ||||
| #include "__SMTP_RCPT.h" | ||||
| #include "__SMTP_RSET.h" | ||||
| #include "__SMTP_VRFY.h" | ||||
| #include "__IMAP_APPEND.h" | ||||
| #include "__IMAP_AUTHENTICATE.h" | ||||
| #include "__IMAP_CHECK.h" | ||||
| #include "__IMAP_CLOSE.h" | ||||
| #include "__IMAP_COPY.h" | ||||
| #include "__IMAP_CREATE.h" | ||||
| #include "__IMAP_DELETE.h" | ||||
| #include "__IMAP_EXAMINE.h" | ||||
| #include "__IMAP_EXPUNGE.h" | ||||
| #include "__IMAP_FETCH.h" | ||||
| #include "__IMAP_LIST.h" | ||||
| #include "__IMAP_LOGIN.h" | ||||
| #include "__IMAP_LSUB.h" | ||||
| #include "__IMAP_RENAME.h" | ||||
| #include "__IMAP_SEARCH.h" | ||||
| #include "__IMAP_SELECT.h" | ||||
| #include "__IMAP_STARTTLS.h" | ||||
| #include "__IMAP_STATUS.h" | ||||
| #include "__IMAP_STORE.h" | ||||
| #include "__IMAP_SUBSCRIBE.h" | ||||
| #include "__IMAP_UID.h" | ||||
| #include "__IMAP_UNSUBSCRIBE.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|    | ||||
|    class IMAPService : public core::Service { | ||||
|    class IMAPService : public core::TCPServer { | ||||
| 
 | ||||
|     public: | ||||
|       IMAPService() {	    | ||||
|          commands.add(_smtp_auth, "AUTH"); | ||||
|          commands.add(_smtp_data, "DATA"); | ||||
|          commands.add(_smtp_ehlo, "EHLO"); | ||||
|          commands.add(_smtp_helo, "HELO"); | ||||
|          commands.add(_smtp_mail, "MAIL"); | ||||
|          commands.add(_smtp_noop, "NOOP"); | ||||
|          commands.add(_smtp_quit, "QUIT"); | ||||
|          commands.add(_smtp_rcpt, "RCPT"); | ||||
|          commands.add(_smtp_rset, "RSET"); | ||||
|          commands.add(_smtp_vrfy, "VRFY"); | ||||
|       IMAPService(core::EPoll &epoll, std::string hostName, std::string mailPath, core::IPAddress ipAddress) | ||||
| 	: TCPServer(epoll, ipAddress), mailFileSystem(mailPath), hostName(hostName) {	    | ||||
|          commands.add(_imap_append, "APPEND"); | ||||
|          commands.add(_imap_authenticate, "AUTHENTCATE"); | ||||
|          commands.add(_imap_check, "CHECK"); | ||||
|          commands.add(_imap_close, "CLOSE"); | ||||
|          commands.add(_imap_copy, "COPY"); | ||||
|          commands.add(_imap_create, "CREATE"); | ||||
|          commands.add(_imap_delete, "DELETE"); | ||||
|          commands.add(_imap_examine, "EXAAMINE"); | ||||
|          commands.add(_imap_expunge, "EXPUNGE"); | ||||
|          commands.add(_imap_fetch, "FETCH"); | ||||
|          commands.add(_imap_list, "LIST"); | ||||
|          commands.add(_imap_login, "LOGIN"); | ||||
|          commands.add(_imap_lsub, "LSUB"); | ||||
|          commands.add(_imap_rename, "RENAME"); | ||||
|          commands.add(_imap_search, "SEARCH"); | ||||
|          commands.add(_imap_select, "SELECT"); | ||||
|          commands.add(_imap_starttls, "STARTTLS"); | ||||
|          commands.add(_imap_status, "STATUS"); | ||||
|          commands.add(_imap_store, "STORE"); | ||||
|          commands.add(_imap_subscribe, "SUBSCRIBE"); | ||||
|          commands.add(_imap_uid, "UID"); | ||||
|          commands.add(_imap_unsubscribe, "UNSUBSCRIBE"); | ||||
|       }       | ||||
| 
 | ||||
|       MailFileSystem mailFileSystem; | ||||
|       std::string hostName; | ||||
|        | ||||
|     private: | ||||
|       __SMTP_AUTH _smtp_auth; | ||||
|       __SMTP_DATA _smtp_data; | ||||
|       __SMTP_EHLO _smtp_ehlo; | ||||
|       __SMTP_HELO _smtp_helo; | ||||
|       __SMTP_MAIL _smtp_mail; | ||||
|       __SMTP_NOOP _smtp_noop; | ||||
|       __SMTP_QUIT _smtp_quit; | ||||
|       __SMTP_RCPT _smtp_rcpt; | ||||
|       __SMTP_RSET _smtp_rset; | ||||
|       __SMTP_VRFY _smtp_vrfy; | ||||
|       __IMAP_APPEND _imap_append; | ||||
|       __IMAP_AUTHENTICATE _imap_authenticate; | ||||
|       __IMAP_CHECK _imap_check; | ||||
|       __IMAP_CLOSE _imap_close; | ||||
|       __IMAP_COPY _imap_copy; | ||||
|       __IMAP_CREATE _imap_create; | ||||
|       __IMAP_DELETE _imap_delete; | ||||
|       __IMAP_EXAMINE _imap_examine; | ||||
|       __IMAP_EXPUNGE _imap_expunge; | ||||
|       __IMAP_FETCH _imap_fetch; | ||||
|       __IMAP_LIST _imap_list; | ||||
|       __IMAP_LOGIN _imap_login; | ||||
|       __IMAP_LSUB _imap_lsub; | ||||
|       __IMAP_RENAME _imap_rename; | ||||
|       __IMAP_SEARCH _imap_search; | ||||
|       __IMAP_SELECT _imap_select; | ||||
|       __IMAP_STARTTLS _imap_starttls; | ||||
|       __IMAP_STATUS _imap_status; | ||||
|       __IMAP_STORE _imap_store; | ||||
|       __IMAP_SUBSCRIBE _imap_subscribe; | ||||
|       __IMAP_UID _imap_uid; | ||||
|       __IMAP_UNSUBSCRIBE _imap_unsubscribe; | ||||
|        | ||||
|    }; | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										21
									
								
								IMAPSession.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								IMAPSession.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #ifndef __IMAPSession_h__ | ||||
| #define __IMAPSession_h__ | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class IMAPSession : public core::TCPSession { | ||||
| 
 | ||||
|     public: | ||||
|        | ||||
|       std::string clientDomainName; | ||||
|       std::string userName; | ||||
|       std::string password; | ||||
|       AuthState authstate = USER_UNKNOWN;       | ||||
|       bool relay = false; | ||||
|        | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										58
									
								
								MailDelivery.cpp2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								MailDelivery.cpp2
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | ||||
| #include "MailDelivery.h" | ||||
| #include "Directory.h" | ||||
| #include "time.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    MailDelivery::MailDelivery(core::EPoll &ePoll, std::string mailQueue) : INotify(ePoll) { | ||||
|       addWatch(mailQueue);    | ||||
|       startDelivery(mailQueue); | ||||
|    } | ||||
| 
 | ||||
|    void MailDelivery::onDataReceived(std::string data) { | ||||
|        | ||||
|       // TODO: Receive file and parse email name. | ||||
|   | ||||
|       // TODO: Compare time to named time and if time has passed then send the message | ||||
|       // TODO:  If email is a local mailbox then make a hard link to the mail message in the appropriate Inbox. Remove entry from queue. | ||||
|       // TODO:  If email is a remote mailbox then perform remote send algorithm. | ||||
|       // TODO:   If error sending on remote then calculate next send attempt time and rename file to reflect new time. | ||||
|       // TODO: If date is on the future then set a timer to that time and wait. | ||||
|              | ||||
|    } | ||||
|     | ||||
|    int MailDelivery::startDelivery(std::string mailQueue) { | ||||
|       coreutils::Directory mailDir(mailQueue); | ||||
|       std::string entryName = mailDir.get().getName();       | ||||
|       std::string now = getMailFileName(); | ||||
| //      if(now > entryName) { | ||||
| //	 std::string recipientName = coreutils::File(); //  read recipient name | ||||
| //	 if(isLocal(recipientName)) { | ||||
| //	    link(existing, new); | ||||
| //	 } else {	        | ||||
| 	    //   open connect socket to mx.domain | ||||
| 	    //   if error  | ||||
| 	    //    calculate future date name and rename mail data | ||||
| 	    //   else  | ||||
| 	    //    write smtp data on socket 25 | ||||
| 	    //  | ||||
| //	 } | ||||
|   //    }       | ||||
|    } | ||||
|     | ||||
|    int MailDelivery::deliver() { | ||||
|     | ||||
|     | ||||
|    } | ||||
| 
 | ||||
|    std::string MailDelivery::getMailFileName() { | ||||
|       char fileName[64]; | ||||
|       time_t gtime; | ||||
|       time(>ime); | ||||
|       struct tm *timex; | ||||
|       timex = gmtime(>ime); | ||||
|       strftime(fileName, 64, "%Y%m%d%H%M%S", gmtime(>ime)); | ||||
|       return std::string(fileName);    | ||||
|    } | ||||
|        | ||||
| } | ||||
							
								
								
									
										24
									
								
								MailDelivery.h2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								MailDelivery.h2
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| #ifndef __MailDelivery_h__ | ||||
| # define __MailDelivery_h__ | ||||
| 
 | ||||
| # include "INotify.h" | ||||
| # include "EPoll.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class MailDelivery : core::INotify { | ||||
|        | ||||
|     public: | ||||
|       MailDelivery(core::EPoll &ePoll, std::string mailQueue); | ||||
| 
 | ||||
|       void onDataReceived(std::string data) override; | ||||
| 	    | ||||
|       int startDelivery(std::string mailQueue); | ||||
|       int deliver(); | ||||
|       std::string getMailFileName(); | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										52
									
								
								MailFileSystem.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								MailFileSystem.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,52 @@ | ||||
| #ifndef __MailFileSystem_h__ | ||||
| # define __MailFileSystem_h__ | ||||
| 
 | ||||
| # include <sys/types.h> | ||||
| # include <sys/stat.h> | ||||
| # include <unistd.h> | ||||
| # include "EPoll.h" | ||||
| # include "INotify.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class MailFileSystem { | ||||
| 
 | ||||
|     public: | ||||
|       MailFileSystem(std::string mailPath) : mailPath(mailPath) {} | ||||
|        | ||||
|       bool ifMailBoxExists(std::string mailbox) { | ||||
| 	 if(stat(getMailBoxPath(mailbox).c_str(), &statbuf) != -1)  | ||||
| 	   if(S_ISDIR(statbuf.st_mode)) | ||||
| 	     return true; | ||||
| 	 return false; | ||||
|       } | ||||
|        | ||||
|       bool ifAliasExists(std::string alias) { | ||||
| 	 if(stat(getMailBoxPath(alias).c_str(), &statbuf) != -1)  | ||||
| 	   if(S_ISREG(statbuf.st_mode)) | ||||
| 	     return true; | ||||
| 	 return false; | ||||
|       } | ||||
|        | ||||
|       std::string getMailBoxPath(std::string mailbox) { | ||||
| 	 coreutils::PString email(mailbox); | ||||
| 	 email.split("@"); | ||||
| 	 std::string path = mailPath + "/" + email[1].str() + "/" + email[0].str();	  | ||||
| 	 return path; | ||||
|       } | ||||
|        | ||||
|       std::vector<std::string> getAliasMailboxes(std::string alias);    | ||||
| 
 | ||||
|       std::string getMailPath() { | ||||
| 	 return mailPath; | ||||
|       }       | ||||
|        | ||||
|     private: | ||||
|       std::string mailPath; | ||||
|       struct stat statbuf; | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										24
									
								
								POP3Command.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								POP3Command.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| #ifndef __POP3Command_h__ | ||||
| # define __POP3Command_h__ | ||||
| 
 | ||||
| # include "Command.h" | ||||
| # include "TCPSession.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class POP3Command : public core::Command { | ||||
|        | ||||
|     public: | ||||
|       virtual int processCommand(std::string request, core::TCPSession *session, std::stringstream &data) override { | ||||
| 	 coreutils::PString parser(request); | ||||
| 	 return processCommand(parser, (POP3Session &)*session, data);	  | ||||
|       } | ||||
| 
 | ||||
|       virtual int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {} | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| @ -1,48 +1,58 @@ | ||||
| #ifndef __POP3Service_h__ | ||||
| #define __POP3Service_h__ | ||||
| 
 | ||||
| #include "Service.h" | ||||
| #include "TCPServer.h" | ||||
| #include "Exception.h" | ||||
| #include "__SMTP_AUTH.h" | ||||
| #include "__SMTP_DATA.h" | ||||
| #include "__SMTP_EHLO.h" | ||||
| #include "__SMTP_HELO.h" | ||||
| #include "__SMTP_MAIL.h" | ||||
| #include "__SMTP_NOOP.h" | ||||
| #include "__SMTP_QUIT.h" | ||||
| #include "__SMTP_RCPT.h" | ||||
| #include "__SMTP_RSET.h" | ||||
| #include "__SMTP_VRFY.h" | ||||
| #include "__POP3_DELE.h" | ||||
| #include "__POP3_LAST.h" | ||||
| #include "__POP3_LIST.h" | ||||
| #include "__POP3_NOOP.h" | ||||
| #include "__POP3_PASS.h" | ||||
| #include "__POP3_QUIT.h" | ||||
| #include "__POP3_RETR.h" | ||||
| #include "__POP3_RPOP.h" | ||||
| #include "__POP3_RSET.h" | ||||
| #include "__POP3_STAT.h" | ||||
| #include "__POP3_TOP.h" | ||||
| #include "__POP3_USER.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|    | ||||
|    class POP3Service : public core::Service { | ||||
|    class POP3Service : public core::TCPServer { | ||||
| 
 | ||||
|     public: | ||||
|       POP3Service() {	    | ||||
|          commands.add(_smtp_auth, "AUTH"); | ||||
|          commands.add(_smtp_data, "DATA"); | ||||
|          commands.add(_smtp_ehlo, "EHLO"); | ||||
|          commands.add(_smtp_helo, "HELO"); | ||||
|          commands.add(_smtp_mail, "MAIL"); | ||||
|          commands.add(_smtp_noop, "NOOP"); | ||||
|          commands.add(_smtp_quit, "QUIT"); | ||||
|          commands.add(_smtp_rcpt, "RCPT"); | ||||
|          commands.add(_smtp_rset, "RSET"); | ||||
|          commands.add(_smtp_vrfy, "VRFY"); | ||||
|       POP3Service(core::EPoll &epoll, std::string hostName, std::string mailPath, core::IPAddress ipAddress) | ||||
| 	: TCPServer(epoll, ipAddress), mailFileSystem(mailPath), hostName(hostName) {	    | ||||
|          commands.add(_pop3_dele, "DELE"); | ||||
|          commands.add(_pop3_last, "LAST"); | ||||
|          commands.add(_pop3_list, "LIST"); | ||||
|          commands.add(_pop3_noop, "NOOP"); | ||||
|          commands.add(_pop3_pass, "PASS"); | ||||
|          commands.add(_pop3_quit, "QUIT"); | ||||
|          commands.add(_pop3_retr, "RETR"); | ||||
|          commands.add(_pop3_rpop, "RPOP"); | ||||
|          commands.add(_pop3_rset, "RSET"); | ||||
|          commands.add(_pop3_stat, "STAT"); | ||||
|          commands.add(_pop3_top, "TOP"); | ||||
|          commands.add(_pop3_user, "USER"); | ||||
|       }       | ||||
| 
 | ||||
|       MailFileSystem mailFileSystem; | ||||
|       std::string hostName; | ||||
|        | ||||
|     private: | ||||
|       __SMTP_AUTH _smtp_auth; | ||||
|       __SMTP_DATA _smtp_data; | ||||
|       __SMTP_EHLO _smtp_ehlo; | ||||
|       __SMTP_HELO _smtp_helo; | ||||
|       __SMTP_MAIL _smtp_mail; | ||||
|       __SMTP_NOOP _smtp_noop; | ||||
|       __SMTP_QUIT _smtp_quit; | ||||
|       __SMTP_RCPT _smtp_rcpt; | ||||
|       __SMTP_RSET _smtp_rset; | ||||
|       __SMTP_VRFY _smtp_vrfy; | ||||
|       __POP3_DELE _pop3_dele; | ||||
|       __POP3_LAST _pop3_last; | ||||
|       __POP3_LIST _pop3_list; | ||||
|       __POP3_NOOP _pop3_noop; | ||||
|       __POP3_PASS _pop3_pass; | ||||
|       __POP3_QUIT _pop3_quit; | ||||
|       __POP3_RETR _pop3_retr; | ||||
|       __POP3_RPOP _pop3_rpop; | ||||
|       __POP3_RSET _pop3_rset; | ||||
|       __POP3_STAT _pop3_stat; | ||||
|       __POP3_TOP _pop3_top; | ||||
|       __POP3_USER _pop3_user; | ||||
|        | ||||
|    }; | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										20
									
								
								POP3Session.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								POP3Session.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| #ifndef __POP3Session_h__ | ||||
| #define __POP3Session_h__ | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class POP3Session : public core::TCPSession { | ||||
| 
 | ||||
|     public:       | ||||
|       std::string clientDomainName; | ||||
|       std::string userName; | ||||
|       std::string password; | ||||
|       AuthState authstate = USER_UNKNOWN;       | ||||
|       bool relay = false; | ||||
|        | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										15
									
								
								SMTPCommand.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								SMTPCommand.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| # include "Command.h" | ||||
| # include "SMTPSession.h" | ||||
| # include "SMTPServer.h" | ||||
| # include "Log.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    int SMTPCommand::processCommand(std::string request, core::TCPSession *session, std::stringstream &data) { | ||||
|       coreutils::PString parser(request); | ||||
|       parser.split(" ");  | ||||
|       return processCommand(parser, (SMTPSession &)*session, (SMTPServer &)session->server, data);	  | ||||
|    } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										21
									
								
								SMTPCommand.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								SMTPCommand.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #ifndef __SMTPCommand_h__ | ||||
| # define __SMTPCommand_h__ | ||||
| 
 | ||||
| # include "Command.h" | ||||
| # include "SMTPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class SMTPServer; | ||||
|     | ||||
|    class SMTPCommand : public core::Command { | ||||
|        | ||||
|     public:       | ||||
|       virtual int processCommand(std::string request, core::TCPSession *session, std::stringstream &data) override; | ||||
|       virtual int processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data) {} | ||||
| 
 | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										91
									
								
								SMTPServer.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								SMTPServer.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,91 @@ | ||||
| #ifndef __SMTPServer_h__ | ||||
| # define __SMTPServer_h__ | ||||
| 
 | ||||
| # include <string> | ||||
| # include "EPoll.h" | ||||
| # include "TCPServer.h" | ||||
| # include "SMTPSession.h" | ||||
| # include "MailFileSystem.h" | ||||
| # include "__SMTP_AUTH.h" | ||||
| # include "__SMTP_DATA.h" | ||||
| # include "__SMTP_EHLO.h" | ||||
| # include "__SMTP_HELO.h" | ||||
| # include "__SMTP_MAIL.h" | ||||
| # include "__SMTP_NOOP.h" | ||||
| # include "__SMTP_QUIT.h" | ||||
| # include "__SMTP_RCPT.h" | ||||
| # include "__SMTP_RSET.h" | ||||
| # include "__SMTP_VRFY.h" | ||||
| # include "INotify.h" | ||||
| # include "Log.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class SMTPServer : public core::TCPServer, public core::INotify { | ||||
|        | ||||
|     public: | ||||
|       SMTPServer(core::EPoll &ePoll, std::string hostName, std::string mailPath, core::IPAddress ipAddress)  | ||||
| 	: core::TCPServer(ePoll, ipAddress, "SMTP Server"), core::INotify(ePoll), hostName(hostName), mailFileSystem(mailPath) {	    | ||||
| 	   this->mailPath = mailPath; | ||||
| 	   commands.add(_smtp_auth, "AUTH"); | ||||
| 	   commands.add(_smtp_data, "DATA"); | ||||
| 	   commands.add(_smtp_ehlo, "EHLO"); | ||||
| 	   commands.add(_smtp_helo, "HELO"); | ||||
| 	   commands.add(_smtp_mail, "MAIL"); | ||||
| 	   commands.add(_smtp_noop, "NOOP"); | ||||
| 	   commands.add(_smtp_quit, "QUIT"); | ||||
| 	   commands.add(_smtp_rcpt, "RCPT"); | ||||
| 	   commands.add(_smtp_rset, "RSET"); | ||||
| 	   commands.add(_smtp_vrfy, "VRFY"); | ||||
| 	   processExisting(); | ||||
| 	   wd = addWatch(mailPath + "/.queue/");	    | ||||
| 	}       | ||||
|        | ||||
|       MailFileSystem mailFileSystem; | ||||
|       std::string hostName; | ||||
|       std::string mailPath; | ||||
|        | ||||
|       SMTPSession * getSocketAccept(core::EPoll &ePoll) override {	 | ||||
| 	 return new SMTPSession(ePoll, *this); | ||||
|       }       | ||||
|        | ||||
|       void sessionErrorHandler(std::string errorString, std::stringstream &out) {      	  | ||||
| 	 out << "252 " << errorString << CRLF; | ||||
|       } | ||||
|        | ||||
|     protected: | ||||
|       void inCreate(std::string name) { | ||||
| 	 int pos = name.find(".") + 10; | ||||
| 	 std::string mail = name.substr(0, pos); | ||||
| 	 std::string recipient = name.substr(pos); | ||||
| 	 if(recipient != "") { | ||||
| 	    std::string fileName = mailPath + "/.queue/" + name; | ||||
| 	    std::string path = mailFileSystem.getMailBoxPath(recipient) + "/Inbox/" + mail; | ||||
| 	    int rc = link(fileName.c_str(), path.c_str()); | ||||
| 	    rc = unlink(fileName.c_str()); | ||||
| 	    coreutils::Log(coreutils::LOG_INFO) << "Message " << mail << " delivered to " << recipient << ".";	  | ||||
| 	 } | ||||
|       } | ||||
|              | ||||
|     private: | ||||
|       __SMTP_AUTH _smtp_auth; | ||||
|       __SMTP_DATA _smtp_data; | ||||
|       __SMTP_EHLO _smtp_ehlo; | ||||
|       __SMTP_HELO _smtp_helo; | ||||
|       __SMTP_MAIL _smtp_mail; | ||||
|       __SMTP_NOOP _smtp_noop; | ||||
|       __SMTP_QUIT _smtp_quit; | ||||
|       __SMTP_RCPT _smtp_rcpt; | ||||
|       __SMTP_RSET _smtp_rset; | ||||
|       __SMTP_VRFY _smtp_vrfy; | ||||
|       int wd; | ||||
|        | ||||
|       void processExisting() { | ||||
| 	 	  | ||||
|       } | ||||
|        | ||||
|    }; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| @ -1,51 +0,0 @@ | ||||
| #ifndef __SMTPService_h__ | ||||
| #define __SMTPService_h__ | ||||
| 
 | ||||
| #include "Service.h" | ||||
| #include "Exception.h" | ||||
| #include "__SMTP_AUTH.h" | ||||
| #include "__SMTP_DATA.h" | ||||
| #include "__SMTP_EHLO.h" | ||||
| #include "__SMTP_HELO.h" | ||||
| #include "__SMTP_MAIL.h" | ||||
| #include "__SMTP_NOOP.h" | ||||
| #include "__SMTP_QUIT.h" | ||||
| #include "__SMTP_RCPT.h" | ||||
| #include "__SMTP_RSET.h" | ||||
| #include "__SMTP_VRFY.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|    | ||||
|    class SMTPService : public core::Service { | ||||
| 
 | ||||
|     public: | ||||
|       SMTPService() {	    | ||||
|          commands.add(_smtp_auth, "AUTH"); | ||||
|          commands.add(_smtp_data, "DATA"); | ||||
|          commands.add(_smtp_ehlo, "EHLO"); | ||||
|          commands.add(_smtp_helo, "HELO"); | ||||
|          commands.add(_smtp_mail, "MAIL"); | ||||
|          commands.add(_smtp_noop, "NOOP"); | ||||
|          commands.add(_smtp_quit, "QUIT"); | ||||
|          commands.add(_smtp_rcpt, "RCPT"); | ||||
|          commands.add(_smtp_rset, "RSET"); | ||||
|          commands.add(_smtp_vrfy, "VRFY"); | ||||
|       }       | ||||
|        | ||||
|     private: | ||||
|       __SMTP_AUTH _smtp_auth; | ||||
|       __SMTP_DATA _smtp_data; | ||||
|       __SMTP_EHLO _smtp_ehlo; | ||||
|       __SMTP_HELO _smtp_helo; | ||||
|       __SMTP_MAIL _smtp_mail; | ||||
|       __SMTP_NOOP _smtp_noop; | ||||
|       __SMTP_QUIT _smtp_quit; | ||||
|       __SMTP_RCPT _smtp_rcpt; | ||||
|       __SMTP_RSET _smtp_rset; | ||||
|       __SMTP_VRFY _smtp_vrfy; | ||||
|        | ||||
|    }; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| @ -1,14 +1,37 @@ | ||||
| #ifndef __SMTPSession_h__ | ||||
| #define __SMTPSession_h__ | ||||
| # define __SMTPSession_h__ | ||||
| 
 | ||||
| #include "includes" | ||||
| # include "TCPSession.h" | ||||
| # include "TCPServer.h" | ||||
| 
 | ||||
| # define CRLF "\r\n" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    enum State {CONNECT, READY, MAIL, RCPT, DATA}; | ||||
|    enum AuthState {USER_UNKNOWN, USER_QUERY, USER_SECRET_QUERY, USER_KNOWN}; | ||||
|    enum Mode {WAIT_FOR_DATA, RECEIVE_DATA}; | ||||
|     | ||||
|    class SMTPSession : public core::TCPSession { | ||||
|        | ||||
|     public:             | ||||
|       SMTPSession(core::EPoll &ePoll, core::TCPServer &server)  | ||||
| 	: TCPSession(ePoll, server, "SMTP Client Session") {} | ||||
| 
 | ||||
|    class SMTPSession : public core::Session { | ||||
| 
 | ||||
|     public: | ||||
|       std::string state; | ||||
|       void onConnected(std::stringstream &out) { | ||||
| 	 out << "220 localhost BMAMail" << CRLF;	    | ||||
|       } | ||||
|        | ||||
|       std::string clientDomainName; | ||||
|       std::string userName; | ||||
|       std::string password;       | ||||
|       std::stringstream mailData; | ||||
|       State state = CONNECT; | ||||
|       AuthState authState = USER_UNKNOWN;       | ||||
|       Mode mode = WAIT_FOR_DATA; | ||||
|       bool relay = false; | ||||
|       std::string sender; | ||||
|       std::vector<std::string> recipientList; | ||||
|        | ||||
|    }; | ||||
|     | ||||
|  | ||||
							
								
								
									
										19
									
								
								__IMAP_APPEND.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_APPEND.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_APPEND_h__ | ||||
| # define ____IMAP_APPEND_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_APPEND : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_AUTHENTICATE.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_AUTHENTICATE.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_AUTHENTICATE_h__ | ||||
| # define ____IMAP_AUTHENTICATE_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_AUTHENTICATE : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_CHECK.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_CHECK.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_CHECK_h__ | ||||
| # define ____IMAP_CHECK_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_CHECK : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_CLOSE.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_CLOSE.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_CLOSE_h__ | ||||
| # define ____IMAP_CLOSE_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_CLOSE : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_COPY.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_COPY.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_COPY_h__ | ||||
| # define ____IMAP_COPY_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_COPY : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_CREATE.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_CREATE.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_CREATE_h__ | ||||
| # define ____IMAP_CREATE_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_CREATE : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_DELETE.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_DELETE.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_DELETE_h__ | ||||
| # define ____IMAP_DELETE_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_DELETE : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_EXAMINE.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_EXAMINE.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_EXAMINE_h__ | ||||
| # define ____IMAP_EXAMINE_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_EXAMINE : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_EXPUNGE.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_EXPUNGE.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_EXPUNGE_h__ | ||||
| # define ____IMAP_EXPUNGE_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_EXPUNGE : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_FETCH.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_FETCH.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_FETCH_h__ | ||||
| # define ____IMAP_FETCH_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_FETCH : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_LIST.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_LIST.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_LIST_h__ | ||||
| # define ____IMAP_LIST_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_LIST : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_LOGIN.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_LOGIN.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_LOGIN_h__ | ||||
| # define ____IMAP_LOGIN_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_LOGIN : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_LSUB.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_LSUB.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_LSUB_h__ | ||||
| # define ____IMAP_LSUB_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_LSUB : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_RENAME.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_RENAME.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_RENAME_h__ | ||||
| # define ____IMAP_RENAME_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_RENAME : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_SEARCH.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_SEARCH.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_SEARCH_h__ | ||||
| # define ____IMAP_SEARCH_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_SEARCH : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_SELECT.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_SELECT.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_SELECT_h__ | ||||
| # define ____IMAP_SELECT_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_SELECT : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_STARTTLS.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_STARTTLS.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_STARTTLS_h__ | ||||
| # define ____IMAP_STARTTLS_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_STARTTLS : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_STATUS.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_STATUS.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_STATUS_h__ | ||||
| # define ____IMAP_STATUS_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_STATUS : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_STORE.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_STORE.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_STORE_h__ | ||||
| # define ____IMAP_STORE_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_STORE : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_SUBSCRIBE.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_SUBSCRIBE.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_SUBSCRIBE_h__ | ||||
| # define ____IMAP_SUBSCRIBE_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_SUBSCRIBE : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_UID.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_UID.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_UID_h__ | ||||
| # define ____IMAP_UID_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_UID : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__IMAP_UNSUBSCRIBE.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__IMAP_UNSUBSCRIBE.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____IMAP_UNSUBSCRIBE_h__ | ||||
| # define ____IMAP_UNSUBSCRIBE_h__ | ||||
| 
 | ||||
| # include "IMAPCommand.h" | ||||
| # include "IMAPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __IMAP_UNSUBSCRIBE : public IMAPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, IMAPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__POP3_DELE.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__POP3_DELE.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____POP3_DELE_h__ | ||||
| # define ____POP3_DELE_h__ | ||||
| 
 | ||||
| # include "POP3Command.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __POP3_DELE : public POP3Command { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__POP3_LAST.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__POP3_LAST.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____POP3_LAST_h__ | ||||
| # define ____POP3_LAST_h__ | ||||
| 
 | ||||
| # include "POP3Command.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __POP3_LAST : public POP3Command { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__POP3_LIST.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__POP3_LIST.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____POP3_LIST_h__ | ||||
| # define ____POP3_LIST_h__ | ||||
| 
 | ||||
| # include "POP3Command.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __POP3_LIST : public POP3Command { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__POP3_NOOP.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__POP3_NOOP.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____POP3_NOOP_h__ | ||||
| # define ____POP3_NOOP_h__ | ||||
| 
 | ||||
| # include "POP3Command.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __POP3_NOOP : public POP3Command { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__POP3_PASS.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__POP3_PASS.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____POP3_PASS_h__ | ||||
| # define ____POP3_PASS_h__ | ||||
| 
 | ||||
| # include "POP3Command.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __POP3_PASS : public POP3Command { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__POP3_QUIT.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__POP3_QUIT.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____POP3_QUIT_h__ | ||||
| # define ____POP3_QUIT_h__ | ||||
| 
 | ||||
| # include "POP3Command.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __POP3_QUIT : public POP3Command { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__POP3_RETR.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__POP3_RETR.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____POP3_RETR_h__ | ||||
| # define ____POP3_RETR_h__ | ||||
| 
 | ||||
| # include "POP3Command.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __POP3_RETR : public POP3Command { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__POP3_RPOP.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__POP3_RPOP.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____POP3_RPOP_h__ | ||||
| # define ____POP3_RPOP_h__ | ||||
| 
 | ||||
| # include "POP3Command.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __POP3_RPOP : public POP3Command { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__POP3_RSET.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__POP3_RSET.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____POP3_RSET_h__ | ||||
| # define ____POP3_RSET_h__ | ||||
| 
 | ||||
| # include "POP3Command.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __POP3_RSET : public POP3Command { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__POP3_STAT.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__POP3_STAT.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____POP3_STAT_h__ | ||||
| # define ____POP3_STAT_h__ | ||||
| 
 | ||||
| # include "POP3Command.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __POP3_STAT : public POP3Command { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__POP3_TOP.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__POP3_TOP.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____POP3_TOP_h__ | ||||
| # define ____POP3_TOP_h__ | ||||
| 
 | ||||
| # include "POP3Command.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __POP3_TOP : public POP3Command { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										19
									
								
								__POP3_USER.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__POP3_USER.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____POP3_USER_h__ | ||||
| # define ____POP3_USER_h__ | ||||
| 
 | ||||
| # include "POP3Command.h" | ||||
| # include "POP3Session.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __POP3_USER : public POP3Command { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, POP3Session &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										70
									
								
								__SMTP_AUTH.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								__SMTP_AUTH.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,70 @@ | ||||
| #include "__SMTP_AUTH.h" | ||||
| #include "SMTPServer.h" | ||||
| #include "Base64.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    int __SMTP_AUTH::processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data) { | ||||
|       | ||||
|       switch(session.authState) {	  | ||||
| 
 | ||||
|        case USER_UNKNOWN:  | ||||
| 	 if(request[1].str() == "LOGIN") { | ||||
| 	     | ||||
| 	    data << "334 VXNlcm5hbWU6" << CRLF; | ||||
| 	     | ||||
| 	    //	       setTimer(10.0f);
 | ||||
|         | ||||
| 	    session.authState = USER_QUERY;		  | ||||
| 	    session.server.commands.grabInput(&session, *this); | ||||
| 	 } | ||||
| 	 else { | ||||
| 	    data << "504 AUTH method not supported." << CRLF;	     | ||||
| 	 } | ||||
| 	 return 1; | ||||
| 	  | ||||
|        case USER_QUERY: | ||||
| 	  | ||||
| 	 session.userName = request[0].str(); | ||||
| 	  | ||||
| 	 //	    setTimer(0.0f);
 | ||||
| 	  | ||||
| 	 data << "334 UGFzc3dvcmQ6" << CRLF; | ||||
| 	  | ||||
| 	 //	    setTimer(10.0f);
 | ||||
| 	 session.authState = USER_SECRET_QUERY; | ||||
| 	 return 1; | ||||
| 	  | ||||
|        case USER_SECRET_QUERY: | ||||
| 	  | ||||
| 	 session.password = request[0].str(); | ||||
| 	  | ||||
| 	 //	    setTimer(0.0f); 
 | ||||
| 	  | ||||
| 	 coreutils::Base64 base64; | ||||
| 	  | ||||
| 	 if(authLogin(session.userName, session.password, server)) { | ||||
| 	    data << "235 2.7.0 Authentication successful" << CRLF; | ||||
| 	    session.relay = true; | ||||
| 	    session.authState = USER_KNOWN; | ||||
| 	    session.server.commands.clearGrab(&session); | ||||
| 	 } | ||||
| 	  | ||||
| 	 else { | ||||
| 	    data << "530 Login was unsuccessful." << CRLF; | ||||
| 	 } | ||||
| 	 return 1; | ||||
|       } | ||||
|        | ||||
|       return 0; | ||||
|    } | ||||
|     | ||||
|    bool __SMTP_AUTH::authLogin(std::string userName, std::string password, SMTPServer &server) { | ||||
|        | ||||
|       std::string secretPath = server.mailFileSystem.getMailBoxPath(userName) + "/.password"; | ||||
|       coreutils::File secret(secretPath); | ||||
|       secret.read(); | ||||
|       return secret.asString() == password;       | ||||
|    } | ||||
|     | ||||
| } | ||||
| @ -1,98 +1,22 @@ | ||||
| #ifndef ____SMTP_AUTH_h__ | ||||
| #define ____SMTP_AUTH_h__ | ||||
| # define ____SMTP_AUTH_h__ | ||||
| 
 | ||||
| #include "Command.h" | ||||
| # include "SMTPCommand.h" | ||||
| # include "SMTPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class __SMTP_AUTH : public core::Command { | ||||
|     | ||||
|    class SMTPServer;  | ||||
|     | ||||
|    class __SMTP_AUTH : public SMTPCommand { | ||||
|        | ||||
|       int processCommand(std::string request, Session *session, std::stringstream &data); | ||||
| 
 | ||||
|          data << "" << std::endl; | ||||
| 
 | ||||
| 
 | ||||
|       //---------------------------------------------------------------------------
 | ||||
|       // AUTH command request handling.
 | ||||
|       //---------------------------------------------------------------------------
 | ||||
| 
 | ||||
|       else if(command(input) == "AUTH") { | ||||
| 
 | ||||
|          if(input.length() > 5) { | ||||
|             string method = input.substr(5); | ||||
| 
 | ||||
|             string userName; | ||||
|             string password; | ||||
| 
 | ||||
|             //--------------------------------
 | ||||
|             // Check for AUTH LOGIN method.
 | ||||
|             //--------------------------------
 | ||||
| 
 | ||||
|             if(method == "LOGIN") { | ||||
| 
 | ||||
|                cout << "334 VXNlcm5hbWU6" << CRLF; | ||||
| 
 | ||||
|                alarm(10); | ||||
| 
 | ||||
|                if(!getline(cin, userName)) { | ||||
|                   return -1; | ||||
|                } | ||||
| 
 | ||||
|                alarm(0); | ||||
| 
 | ||||
|                if(userName[userName.length() - 1] == '\r') | ||||
|                  userName.erase(userName.length() - 1); | ||||
| 
 | ||||
|                cout << "334 UGFzc3dvcmQ6" << CRLF; | ||||
| 
 | ||||
|                alarm(10); | ||||
| 
 | ||||
|                if(!getline(cin, password)) { | ||||
|                   return -1; | ||||
|                }               | ||||
|                alarm(0); | ||||
| 
 | ||||
|                if(password[password.length() - 1] == '\r') | ||||
|                  password.erase(password.length() - 1); | ||||
| 
 | ||||
|                BASE64 base64; | ||||
| 
 | ||||
|                log.message("Logging in with user '" + base64.decode(userName) + "' using password '" + base64.decode(password) + "'."); | ||||
| 
 | ||||
|                if(authLogin(base64.decode(userName), base64.decode(password))) { | ||||
|                   cout << "235 Authentication successful" << CRLF; | ||||
|                   log.message("Response: 235 Authentication successful."); | ||||
|                   relay = true; | ||||
|                } | ||||
|                 | ||||
|                else { | ||||
|                   cout << "530 Login was unsuccessful." << CRLF; | ||||
|                   log.message("Response: 530 Login was unsuccessful."); | ||||
|                } | ||||
|             } | ||||
| 
 | ||||
|             else { | ||||
|                cout << "530 AUTH method not supported." << CRLF; | ||||
|                log.message("Response: 530 AUTH method not supported."); | ||||
|             } | ||||
| 
 | ||||
|          } | ||||
| 
 | ||||
|          else { | ||||
| 
 | ||||
| 
 | ||||
|          } | ||||
| 
 | ||||
|       } | ||||
|     public: | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data); | ||||
|        | ||||
|       bool authLogin(std::string userName, std::string password, SMTPServer &server); | ||||
|        | ||||
|          httpRequest.response.addHeader("Content-Type", "script/javascript"); | ||||
| 
 | ||||
|          return 0; | ||||
|       } | ||||
| 
 | ||||
|    }; | ||||
| 
 | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										89
									
								
								__SMTP_DATA.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								__SMTP_DATA.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,89 @@ | ||||
| #include "__SMTP_DATA.h" | ||||
| #include "SMTPServer.h" | ||||
| #include "Log.h" | ||||
| #include <chrono> | ||||
| #include <iomanip> | ||||
| 
 | ||||
| namespace mail { | ||||
|        | ||||
|    int __SMTP_DATA::processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data) { | ||||
|        | ||||
|       switch(session.mode) { | ||||
| 	  | ||||
|        case WAIT_FOR_DATA: | ||||
| 	  | ||||
| 	 switch(session.state) { | ||||
| 	     | ||||
| 	  case RCPT: | ||||
| 	    data << "354 Enter the mail message terminated by <CRLF>.<CRLF>" << CRLF;	  | ||||
| 	    session.mailData.str(""); | ||||
| 	    session.mode = RECEIVE_DATA; | ||||
| 	    session.server.commands.grabInput(&session, *this);		   | ||||
| 	    //	       setTimer(120.0f);
 | ||||
| 	    break; | ||||
| 	     | ||||
| 	  case MAIL: | ||||
| 	    data << "503 Please use RCPT first" << CRLF;	  | ||||
| 	    break; | ||||
| 	        | ||||
| 	  default: | ||||
| 	    data << "503 Please use MAIL first" << CRLF;	 	     | ||||
| 	    break; | ||||
| 	     | ||||
| 	 } | ||||
| 	 break; | ||||
| 	  | ||||
|        case RECEIVE_DATA: | ||||
| 	 if(request.str() != ".")  | ||||
| 	   session.mailData << request.str() << CRLF;	     	    	     | ||||
| 	 else {		  | ||||
| 	    session.mode = WAIT_FOR_DATA;  	        | ||||
| 	    session.state = READY; | ||||
| 	    session.server.commands.clearGrab(&session); | ||||
| 	    //	       if(filterMessage(session.mailData)) {	    		    
 | ||||
| 	    if(session.recipientList.size() > 0) {		       | ||||
| 	       if(session.mailData.str().size() > 0) {  | ||||
| 		  std::string ID = queueMail(server, session.sender, session.recipientList, session.mailData); | ||||
| 		  if(ID != "") {      | ||||
| 		     coreutils::Log(coreutils::LOG_INFO) << "Queued message " << ID << "."; | ||||
| 		     data << "250 OK Queued message " << ID << CRLF;		   | ||||
| 		  } | ||||
| 		  else		      | ||||
| 		    data << "550 Mail message too big" << CRLF;  | ||||
| 	       } else  | ||||
| 		 data << "550 Mail message was empty" << CRLF;		    | ||||
| 	    } else 	        | ||||
| 	      data << "250 OK Queued message " << CRLF;  | ||||
| 	    //	       } else 	    
 | ||||
| 	    //		 data << "550 Message is probably spam" << CRLF;
 | ||||
| 	 } | ||||
| 	 break;	  | ||||
|       } | ||||
|    } | ||||
|     | ||||
|    std::string __SMTP_DATA::generateMailFileName() { | ||||
|       std::stringstream temp; | ||||
|       struct timespec timex; | ||||
|       clock_gettime(CLOCK_REALTIME, &timex); | ||||
|       temp << timex.tv_sec << "." << std::setfill('0') << std::setw(9) << timex.tv_nsec;  | ||||
|       return temp.str();	 | ||||
|    }       | ||||
|     | ||||
|    std::string __SMTP_DATA::queueMail(SMTPServer &server, std::string sender, std::vector<std::string> recipientList, std::stringstream &mailData) {  | ||||
|       std::string fileName = server.mailFileSystem.getMailPath() + "/.queue/" + generateMailFileName(); | ||||
|       coreutils::File mailFile(fileName, O_CREAT | O_WRONLY, 0660); | ||||
|       mailFile.write(mailData.str());       | ||||
| 
 | ||||
|       for(std::string recipient: recipientList) { | ||||
| 	 std::string newName = fileName + recipient; | ||||
| 	 link(fileName.c_str(), newName.c_str()); | ||||
|       } | ||||
|        | ||||
|       unlink(fileName.c_str()); | ||||
|        | ||||
|       return fileName; | ||||
|    } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
|        | ||||
							
								
								
									
										191
									
								
								__SMTP_DATA.h
									
									
									
									
									
								
							
							
						
						
									
										191
									
								
								__SMTP_DATA.h
									
									
									
									
									
								
							| @ -1,177 +1,24 @@ | ||||
| #ifndef ____SMTP_DATA_h__ | ||||
| #define ____SMTP_DATA_h__ | ||||
| # define ____SMTP_DATA_h__ | ||||
| 
 | ||||
| #include "Command.h" | ||||
| # include "SMTPCommand.h" | ||||
| # include "SMTPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class __SMTP_DATA : public core::Command { | ||||
|     | ||||
|    class SMTPServer; | ||||
|     | ||||
|    class __SMTP_DATA : public SMTPCommand {  | ||||
|        | ||||
|       int processCommand(std::string request, Session *session, std::stringstream &data); | ||||
| 
 | ||||
|          data << "" << std::endl; | ||||
| 
 | ||||
|       //---------------------------------------------------------------------------
 | ||||
|       // DATA command request handling.
 | ||||
|       //---------------------------------------------------------------------------      
 | ||||
| 
 | ||||
|       else if(command(input) == "DATA") { | ||||
| 
 | ||||
|          //--------------------------------------------------------------
 | ||||
|          // We must have recipients before we can send data.
 | ||||
|          //--------------------------------------------------------------
 | ||||
| 
 | ||||
|          if(state == "RCPT") { | ||||
| 
 | ||||
|             //---------------------------------------------------------
 | ||||
|             // Prompt for client to begin entering mail message data.
 | ||||
|             //---------------------------------------------------------
 | ||||
| 
 | ||||
|             cout << "354 Enter the mail message terminated by <CRLF>.<CRLF>" << CRLF; | ||||
| 
 | ||||
|             mailData = ""; | ||||
| 
 | ||||
|             //-----------------------------------------------------------
 | ||||
|             // Receive mail message one line at a time and keep an eye
 | ||||
|             // out for the terminating period character.
 | ||||
|             //-----------------------------------------------------------
 | ||||
| 
 | ||||
|             do { | ||||
| 
 | ||||
|                alarm(120); | ||||
| 
 | ||||
|                if(!getline(cin, input)) { | ||||
|                   return -1; | ||||
|                } | ||||
| 
 | ||||
|                if(input[input.length() - 1] == '\r') | ||||
|                  input.erase(input.length() - 1); | ||||
| 
 | ||||
|                alarm(0); | ||||
|               if(input != ".") { | ||||
| 
 | ||||
|                   //--------------------------------------------------------------
 | ||||
|                   // If there was a period for the first character but it wasn't
 | ||||
|                   // the only character then remove and ignore the first period.
 | ||||
|                   // This is the transparency mode capability.
 | ||||
|                   //--------------------------------------------------------------
 | ||||
| 
 | ||||
|                   if(input[0] == '.') { | ||||
|                      mailData += input.substr(1) + CRLF; | ||||
|                   } | ||||
|                    | ||||
|                   else { | ||||
|                      mailData += input + CRLF; | ||||
|                   } | ||||
|                    | ||||
|                }   | ||||
|                 | ||||
|             } while(input != "."); | ||||
| 
 | ||||
|             //------------------------------------------------------------------
 | ||||
|             // Run the received message through an external filter program if
 | ||||
|             // one is configured into the system settings.
 | ||||
|             //------------------------------------------------------------------
 | ||||
| 
 | ||||
|             string ID; | ||||
| 
 | ||||
|             if(filterMessage(mailData)) { | ||||
| 
 | ||||
|                if(recipientList != "") { | ||||
| 
 | ||||
|                   if(mailData.length() > 0) { | ||||
| 
 | ||||
|                      //------------------------------------------------------------------
 | ||||
|                      // We have the message and we have a list of recipients. Send the
 | ||||
|                      // message to the queue since we know everyone in the recipient
 | ||||
|                      // list has passed the test.
 | ||||
|                      //------------------------------------------------------------------
 | ||||
|                                            | ||||
|                      ID = queueMail(sender, recipientList, mailData, clientIP, log, sql, "N"); | ||||
| 
 | ||||
|                      if(ID != "") { | ||||
| 
 | ||||
|                         log.message("Response: 250 OK Queued message " + ID); | ||||
| 
 | ||||
|                         //------------------------------
 | ||||
|                         // Tell the client we sent it.
 | ||||
|                         //------------------------------
 | ||||
| 
 | ||||
|                         cout << "250 OK Queued message " << ID << CRLF; | ||||
|                      } | ||||
|                       | ||||
|                      else { | ||||
| 
 | ||||
|                         log.message("Response: 550 Mail message too big."); | ||||
| 
 | ||||
|                         //---------------------------------
 | ||||
|                         // Tell the client it was too big.
 | ||||
|                         //---------------------------------
 | ||||
| 
 | ||||
|                         cout << "550 Mail message too big" << CRLF; | ||||
|                      } | ||||
|                       | ||||
|                   }   | ||||
|                    | ||||
|                   //------------------------------------------------------------------------
 | ||||
|                   // The mail message is empty so we are going to error out. We don't like
 | ||||
|                   // getting empty messages.
 | ||||
|                   //------------------------------------------------------------------------
 | ||||
| 
 | ||||
|                   else { | ||||
| 
 | ||||
|                      log.message("Response: 550 Mail message was empty."); | ||||
|                      cout << "550 Mail message was empty" << CRLF; | ||||
| 
 | ||||
|                   } | ||||
|                                      | ||||
|                }   | ||||
|                 | ||||
|                else { | ||||
| 
 | ||||
|                   log.message("Response: 250 OK Queued message. (We actually discarded it due to empty recipient list)"); | ||||
| 
 | ||||
|                   //------------------------------
 | ||||
|                   // Tell the client we sent it.
 | ||||
|                   //------------------------------
 | ||||
| 
 | ||||
|                   cout << "250 OK Queued message " << ID << CRLF; | ||||
| 
 | ||||
|                } | ||||
|                 | ||||
|             }   | ||||
| 
 | ||||
|             //----------------------------------------------------
 | ||||
|             // Error out cause it did not pass the filter test.
 | ||||
|             //----------------------------------------------------
 | ||||
| 
 | ||||
|             else { | ||||
| 
 | ||||
|                cout << "550 Message is probably spam" << CRLF; | ||||
|                log.message("Response: 550 Message is probably spam."); | ||||
|             } | ||||
| 
 | ||||
|             //----------------------------
 | ||||
|             // Return to the READY state.
 | ||||
|             //----------------------------
 | ||||
| 
 | ||||
|             state = "READY"; | ||||
|          } | ||||
|                  //--------------------------------------------------------
 | ||||
|          // Generate an error cause we are not in the right state.
 | ||||
|          //--------------------------------------------------------
 | ||||
| 
 | ||||
|          else { | ||||
| 
 | ||||
|             if(state == "MAIL") { | ||||
|                cout << "503 Please use RCPT first" << CRLF; | ||||
|                log.message("Response: 503 Please use RCPT first."); | ||||
|             } | ||||
| 
 | ||||
|             else { | ||||
|                cout << "503 Please use MAIL first" << CRLF; | ||||
|                log.message("Response: 503 Please use MAIL first."); | ||||
|             } | ||||
| 
 | ||||
|          } | ||||
|       } | ||||
|     public: | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data); | ||||
|        | ||||
|       std::string generateMailFileName();       | ||||
|       std::string queueMail(SMTPServer &server, std::string sender, std::vector<std::string> recipientList, std::stringstream &mailData); | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
|        | ||||
| #endif | ||||
|        | ||||
							
								
								
									
										19
									
								
								__SMTP_EHLO.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__SMTP_EHLO.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #include "__SMTP_EHLO.h" | ||||
| #include "SMTPServer.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    int __SMTP_EHLO::processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data) { | ||||
|        | ||||
|       session.clientDomainName = request[1].str(); | ||||
|        | ||||
|       data << "250-" << server.hostName << CRLF; | ||||
|       //  cout << "250-STARTTLS" << CRLF;
 | ||||
|       //  cout << "250-PIPELINING" << CRLF;
 | ||||
|       //  cout << "250-8BITMIME" << CRLF;
 | ||||
|       data << "250-AUTH LOGIN" << CRLF; | ||||
|       data << "250 HELP" << CRLF; | ||||
|       session.state = READY; | ||||
|    } | ||||
|     | ||||
| } | ||||
| @ -1,30 +1,20 @@ | ||||
| #ifndef ____SMTP_EHLO_h__ | ||||
| #define ____SMTP_EHLO_h__ | ||||
| # define ____SMTP_EHLO_h__ | ||||
| 
 | ||||
| #include "Command.h" | ||||
| # include "SMTPCommand.h" | ||||
| # include "SMTPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class __SMTP_EHLO : public core::Command { | ||||
|     | ||||
|    class SMTPServer;  | ||||
|     | ||||
|    class __SMTP_EHLO : public SMTPCommand { | ||||
|        | ||||
|       int processCommand(std::string request, Session *session, std::stringstream &data); | ||||
|     public: | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data); | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
|          if(input.length() > 5) { | ||||
|             string hostName = input.substr(5); | ||||
|          } | ||||
| 
 | ||||
|          else { | ||||
| 
 | ||||
|             // TODO: Provide error message demanding identity here. 
 | ||||
|             // 
 | ||||
|          } | ||||
| 
 | ||||
|          data << "250-" << getHostName() << CRLF; | ||||
|          //  cout << "250-STARTTLS" << CRLF;
 | ||||
|          //  cout << "250-PIPELINING" << CRLF;
 | ||||
|          //  cout << "250-8BITMIME" << CRLF;
 | ||||
|          data << "250-AUTH LOGIN" << CRLF; | ||||
|          data << "250 HELP" << CRLF; | ||||
|          session->state = "READY"; | ||||
|       } | ||||
|        | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										11
									
								
								__SMTP_EXPN.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								__SMTP_EXPN.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | ||||
| #include "__SMTP_EXPN.h" | ||||
| #include "SMTPServer.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    int __SMTP_EXPN::processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data) {       | ||||
|       data << "252 You must know recipient." << CRLF; | ||||
|       session.state = READY; | ||||
|    }       | ||||
|     | ||||
| } | ||||
							
								
								
									
										19
									
								
								__SMTP_EXPN.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__SMTP_EXPN.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____SMTP_EXPN_h__ | ||||
| # define ____SMTP_EXPN_h__ | ||||
| 
 | ||||
| # include "SMTPCommand.h" | ||||
| # include "SMTPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class SMTPServer; | ||||
|     | ||||
|    class __SMTP_EXPN : public SMTPCommand { | ||||
|        | ||||
|     public: | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data); | ||||
|        | ||||
|    }; | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										15
									
								
								__SMTP_HELO.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								__SMTP_HELO.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| #include "__SMTP_HELO.h" | ||||
| #include "SMTPServer.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    int __SMTP_HELO::processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data) { | ||||
|        | ||||
|       std::string clientName = request[1].str(); | ||||
|        | ||||
|       data << "250 " << server.hostName << CRLF; | ||||
|       session.state = READY; | ||||
|    } | ||||
|     | ||||
| } | ||||
| 
 | ||||
| @ -1,32 +1,20 @@ | ||||
| #ifndef ____SMTP_HELO_h__ | ||||
| #define ____SMTP_HELO_h__ | ||||
| # define ____SMTP_HELO_h__ | ||||
| 
 | ||||
| #include "Command.h" | ||||
| # include "SMTPCommand.h" | ||||
| # include "SMTPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class __SMTP_HELO : public core::Command { | ||||
|     | ||||
|    class SMTPServer; | ||||
|     | ||||
|    class __SMTP_HELO : public SMTPCommand { | ||||
|        | ||||
|       int processCommand(std::string request, Session *session, std::stringstream &data); | ||||
|     public: | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data); | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
|          data << "" << std::endl; | ||||
| 
 | ||||
|      //---------------------------------------------------------------------------
 | ||||
|       // HELO command request handling.
 | ||||
|       //---------------------------------------------------------------------------      
 | ||||
| 
 | ||||
|       if(command(input) == "HELO") { | ||||
| 
 | ||||
|          if(input.length() > 5) { | ||||
|             string hostName = input.substr(5); | ||||
|          } | ||||
| 
 | ||||
|          else { | ||||
| 
 | ||||
|             // TODO: Provide error message demanding identity here. 
 | ||||
|             // 
 | ||||
|          } | ||||
| 
 | ||||
|          cout << "250 " << getHostName() << CRLF; | ||||
|          state = "READY"; | ||||
|       } | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										12
									
								
								__SMTP_HELP.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								__SMTP_HELP.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| #include "__SMTP_HELP.h" | ||||
| #include "SMTPServer.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    int __SMTP_HELP::processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data) { | ||||
|        | ||||
|       data << "250 Sure you need help." << CRLF; | ||||
|       session.state = READY; | ||||
|    } | ||||
|     | ||||
| } | ||||
							
								
								
									
										19
									
								
								__SMTP_HELP.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								__SMTP_HELP.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| #ifndef ____SMTP_HELP_h__ | ||||
| # define ____SMTP_HELP_h__ | ||||
| 
 | ||||
| # include "SMTPCommand.h" | ||||
| # include "SMTPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class SMTPServer; | ||||
|     | ||||
|    class __SMTP_HELP : public SMTPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data); | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										32
									
								
								__SMTP_MAIL.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								__SMTP_MAIL.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | ||||
| #include "__SMTP_MAIL.h" | ||||
| #include "SMTPServer.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    int __SMTP_MAIL::processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data) { | ||||
|        | ||||
|       if(request.ifNext("MAIL FROM:")) {  | ||||
| 	 request.skipWhitespace(); | ||||
| 	 if(request.ifNext("<")) { | ||||
| 	    session.sender = request.getTokenExclude(">");	     | ||||
| 	    if(session.authState = USER_KNOWN) { | ||||
| 	       data << "250 OK" << CRLF; | ||||
| 	       session.recipientList.clear(); | ||||
| 	       session.state = MAIL; | ||||
| 	    } | ||||
| 	 } else  | ||||
| 	   data << "550 Usage: MAIL FROM:<email-address>" << CRLF;	  | ||||
|       } else  | ||||
| 	data << "550 Usage: MAIL FROM:<email-address>" << CRLF; | ||||
|        | ||||
|       return 1; | ||||
|    } | ||||
|     | ||||
|    std::string domainOnly(std::string email) { | ||||
|       coreutils::PString split(email); | ||||
|       split.split("@"); | ||||
|       return split[1].str(); | ||||
|    }       | ||||
|     | ||||
| } | ||||
| 
 | ||||
| @ -1,38 +1,21 @@ | ||||
| #ifndef ____SMTP_MAIL_h__ | ||||
| #define ____SMTP_MAIL_h__ | ||||
| # define ____SMTP_MAIL_h__ | ||||
| 
 | ||||
| #include "Command.h" | ||||
| # include "SMTPCommand.h" | ||||
| # include "SMTPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class __SMTP_MAIL : public core::Command { | ||||
|     | ||||
|    class SMTPServer; | ||||
|     | ||||
|    class __SMTP_MAIL : public SMTPCommand { | ||||
|        | ||||
|       int processCommand(std::string request, Session *session, std::stringstream &data); | ||||
|     public: | ||||
|        | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data); | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
|          data << "" << std::endl; | ||||
| 
 | ||||
|       //---------------------------------------------------------------------------
 | ||||
|       // MAIL command request handling.
 | ||||
|       //---------------------------------------------------------------------------
 | ||||
| 
 | ||||
|       else if(command(input) == "MAIL") { | ||||
| 
 | ||||
|          sender = cleanEMail(input.substr(5)); | ||||
| 
 | ||||
|          //-------------------------------------------------------------
 | ||||
|          // Verify that the senders domain name resolves to an address
 | ||||
|          // with an MX record. If not and there is a bounce then we 
 | ||||
|          // will not be able to return the bounce message so it is
 | ||||
|          // probably a spammer anyway.
 | ||||
|          //-------------------------------------------------------------
 | ||||
| 
 | ||||
|          if(verifyDomainMX(domainOnly(sender))) { | ||||
| 
 | ||||
|             cout << "250 OK" << CRLF; | ||||
|             log.message("Response: 250 OK."); | ||||
|             recipientList = ""; | ||||
|             state = "MAIL"; | ||||
|          } | ||||
| 
 | ||||
| 
 | ||||
|       } | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										20
									
								
								__SMTP_NOOP.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								__SMTP_NOOP.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| #ifndef ____SMTP_NOOP_h__ | ||||
| # define ____SMTP_NOOP_h__ | ||||
| 
 | ||||
| # include "SMTPCommand.h" | ||||
| # include "SMTPSession.h" | ||||
| # include "PString.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    class __SMTP_NOOP : public SMTPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| @ -1,12 +1,20 @@ | ||||
| #ifndef ____SMTP_NOOP_h__ | ||||
| #define ____SMTP_NOOP_h__ | ||||
| # define ____SMTP_NOOP_h__ | ||||
| 
 | ||||
| #include "Command.h" | ||||
| # include "SMTPCommand.h" | ||||
| # include "SMTPSession.h" | ||||
| # include "PString.h" | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class __SMTP_NOOP : public core::Command { | ||||
|     | ||||
|    class __SMTP_NOOP : public SMTPCommand { | ||||
|        | ||||
|       int processCommand(std::string request, Session *session, std::stringstream &data); | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, std::stringstream &data) {	    | ||||
|          data << "250 OK" << CRLF; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										12
									
								
								__SMTP_QUIT.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								__SMTP_QUIT.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| # include "__SMTP_QUIT.h" | ||||
| # include "SMTPServer.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    int __SMTP_QUIT::processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data) {	    | ||||
|       data << "221 " << server.hostName << CRLF; | ||||
|       session.shutdown("quit request"); | ||||
|    } | ||||
|     | ||||
| } | ||||
| 
 | ||||
| @ -1,17 +1,21 @@ | ||||
| #ifndef ____SMTP_QUIT_h__ | ||||
| #define ____SMTP_QUIT_h__ | ||||
| # define ____SMTP_QUIT_h__ | ||||
| 
 | ||||
| #include "Command.h" | ||||
| # include "SMTPCommand.h" | ||||
| # include "SMTPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class __SMTP_QUIT : public core::Command { | ||||
|    class SMTPServer; | ||||
|     | ||||
|    class __SMTP_QUIT : public SMTPCommand { | ||||
|        | ||||
|     public: | ||||
|        | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data);	    | ||||
|        | ||||
|       int processCommand(std::string request, Session *session, std::stringstream &data); | ||||
|          data << "221 " << getHostName() << CRLF; | ||||
|          session->shutdown(); | ||||
|       } | ||||
| 
 | ||||
|    }; | ||||
| 
 | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										34
									
								
								__SMTP_RCPT.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								__SMTP_RCPT.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| # include "__SMTP_RCPT.h" | ||||
| # include "SMTPServer.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|        | ||||
|    int __SMTP_RCPT::processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data) { | ||||
|        | ||||
|       if((session.state == MAIL) || (session.state == RCPT)) { | ||||
| 	 std::string recipient; | ||||
| 	 if(request.ifNext("RCPT TO:")) {	       | ||||
| 	    request.skipWhitespace(); | ||||
| 	    if(request.ifNext("<")) { | ||||
| 	       recipient = request.getTokenExclude(">"); | ||||
| 	       if(server.mailFileSystem.ifMailBoxExists(recipient)) {	     | ||||
| 		  session.recipientList.push_back(recipient); | ||||
| 		  data << "250 OK" << CRLF; | ||||
| 		  session.state = RCPT;	        | ||||
| 	       } else if(session.relay) {  | ||||
| 		  session.recipientList.push_back(recipient); | ||||
| 		  data << "250 OK" << CRLF; | ||||
| 		  session.state = RCPT;		      | ||||
| 	       } else  | ||||
| 		 data << "550 Mailbox does not exist" << CRLF;      	          	        | ||||
| 	    } else | ||||
| 	      data << "550 Usage: RCPT TO:<email-address>" << CRLF; | ||||
| 	 } else | ||||
| 	   data << "550 Usage: RCPT TO:<email-address>" << CRLF;	 	  | ||||
|       } else  | ||||
| 	data << "503 Please use MAIL first" << CRLF; | ||||
|        | ||||
|       return 1; | ||||
|    } | ||||
|     | ||||
| } | ||||
							
								
								
									
										163
									
								
								__SMTP_RCPT.h
									
									
									
									
									
								
							
							
						
						
									
										163
									
								
								__SMTP_RCPT.h
									
									
									
									
									
								
							| @ -1,162 +1,21 @@ | ||||
| #ifndef ____SMTP_RCPT_h__ | ||||
| #define ____SMTP_RCPT_h__ | ||||
| # define ____SMTP_RCPT_h__ | ||||
| 
 | ||||
| #include "Command.h" | ||||
| # include "SMTPCommand.h" | ||||
| # include "MailFileSystem.h" | ||||
| # include "SMTPSession.h" | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class __SMTP_RCPT : public core::Command { | ||||
|    class SMTPServer; | ||||
|     | ||||
|    class __SMTP_RCPT : public SMTPCommand { | ||||
|        | ||||
|       int processCommand(std::string request, Session *session, std::stringstream &data); | ||||
| 
 | ||||
|          if((state == "MAIL") || (state == "RCPT")) { | ||||
| 
 | ||||
|             bool done = false; | ||||
| 
 | ||||
|             //--------------------------------------
 | ||||
|             // Obtain the recipient's email address.
 | ||||
|             //--------------------------------------
 | ||||
| 
 | ||||
|             string recipient = input.substr(5); | ||||
| 
 | ||||
|             //-----------------------------------------------
 | ||||
|             // Fetch the recipient list for the alias.
 | ||||
|             //-----------------------------------------------
 | ||||
| 
 | ||||
|             string aliasRecipients; | ||||
| 
 | ||||
|             if(getAliasList(cleanEMail(recipient), aliasRecipients)) { | ||||
| 
 | ||||
|                //-----------------------------------------------
 | ||||
|                // If the list is not blank then add the list
 | ||||
|                // to the recipient list and accept the request.
 | ||||
|                //-----------------------------------------------
 | ||||
| 
 | ||||
|                recipientList += aliasRecipients; | ||||
|                data << "250 OK" << CRLF; | ||||
|                state = "RCPT"; | ||||
|                done = true; | ||||
|             } | ||||
|             //-------------------------------------------------
 | ||||
|             // No alias entry for the mailbox so check if it
 | ||||
|             // is a hard mailbox.
 | ||||
|             //-------------------------------------------------
 | ||||
| 
 | ||||
|             if(!done) { | ||||
| 
 | ||||
|                //--------------------------------------
 | ||||
|                // Check to see if the user is a local
 | ||||
|                // address to deliver to.
 | ||||
|                //--------------------------------------
 | ||||
| 
 | ||||
|                if(localUser(cleanEMail(recipient))) { | ||||
| 
 | ||||
|                   //------------------------------------------
 | ||||
|                   // They're local so lets queue it for them.
 | ||||
|                   //------------------------------------------
 | ||||
| 
 | ||||
|                   recipientList += cleanEMail(recipient) + " "; | ||||
|                   data << "250 OK" << CRLF; | ||||
|                   state = "RCPT"; | ||||
|                   done = true; | ||||
|                } | ||||
|                 | ||||
|             }   | ||||
| 
 | ||||
|             //--------------------------------------------------
 | ||||
|             // There is no mailbox either so do domain check.
 | ||||
|             //--------------------------------------------------
 | ||||
| 
 | ||||
|             if(!done) { | ||||
| 
 | ||||
|                //---------------------------------------------------
 | ||||
|                // Check to see if the domain is good at least and
 | ||||
|                // if there is a default mailbox address..
 | ||||
|                //---------------------------------------------------
 | ||||
|                string defaultMailbox; | ||||
| 
 | ||||
|                if(localDomain(domainOnly(cleanEMail(recipient)), defaultMailbox)) { | ||||
| 
 | ||||
|                   //--------------------------------------------------
 | ||||
|                   // The domain is local so if there is a default
 | ||||
|                   // mailbox then let's send it to the queue with the
 | ||||
|                   // default address attached instead.
 | ||||
|                   //--------------------------------------------------
 | ||||
| 
 | ||||
|                   if(defaultMailbox != "*NONE") { | ||||
| 
 | ||||
|                      //---------------------------------------------------------
 | ||||
|                      // If the default mailbox is *DISCARD then we do not want 
 | ||||
|                      // to add the mailbox to the recipient list but we still
 | ||||
|                      // want to say we have a mailbox.
 | ||||
|                      //---------------------------------------------------------
 | ||||
| 
 | ||||
|                      if(defaultMailbox != "*DISCARD") | ||||
|                        recipientList += defaultMailbox + " "; | ||||
| 
 | ||||
|                      cout << "250 OK" << CRLF; | ||||
|                      log.message("Response: 250 OK."); | ||||
| 
 | ||||
|                      state = "RCPT"; | ||||
|                      done = true; | ||||
|                   } | ||||
|                    | ||||
|                   //--------------------------------------------------
 | ||||
|                   // If there is no default address then we will tell
 | ||||
|                   // the client that the mailbox does not exist. 
 | ||||
|                   //--------------------------------------------------
 | ||||
| 
 | ||||
|                   else { | ||||
| 
 | ||||
|                      cout << "553 Mailbox does not exist" << CRLF; | ||||
|                      log.message("Response: 553 Mailbox does not exist."); | ||||
|                       | ||||
|                      done = true; | ||||
|                   } | ||||
|                    | ||||
|                }   | ||||
|                 | ||||
|             }   | ||||
| 
 | ||||
|             //--------------------------------------------------------------
 | ||||
|             // If we are not done then this is a relay request.
 | ||||
|             //--------------------------------------------------------------
 | ||||
| 
 | ||||
|             if (!done) { | ||||
| 
 | ||||
|                //---------------------------------------------------------
 | ||||
|                // If relaying is enabled for this conversation then 
 | ||||
|                // queue the mail.
 | ||||
|                //---------------------------------------------------------
 | ||||
| 
 | ||||
|                if(relay) { | ||||
|                   recipientList += cleanEMail(recipient) + " "; | ||||
|                   cout << "250 OK" << CRLF; | ||||
|                   log.message("Response: 250 OK."); | ||||
|                   state = "RCPT"; | ||||
|                } | ||||
|                 | ||||
|                //----------------------------------------
 | ||||
|                // Otherwise send an error.
 | ||||
|                //----------------------------------------
 | ||||
| 
 | ||||
|                else { | ||||
|                   cout << "553 Server requires authentication to relay" << CRLF; | ||||
|                   log.message("Response: 553 Server requires authentication to relay."); | ||||
|                } | ||||
|                 | ||||
|             }   | ||||
| 
 | ||||
|          }  | ||||
|        else { | ||||
|             cout << "503 Please use MAIL first" << CRLF; | ||||
|             log.message("Response: 503 Please use MAIL first."); | ||||
|          } | ||||
|                return 0; | ||||
|       } | ||||
| 
 | ||||
|     public:  | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, SMTPServer &server, std::stringstream &data); | ||||
| 	        | ||||
|    }; | ||||
| 
 | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										20
									
								
								__SMTP_RSET.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								__SMTP_RSET.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| #ifndef ____SMTP_RSET_h__ | ||||
| #define ____SMTP_RSET_h__ | ||||
| 
 | ||||
| #include "SMTPCommand.h" | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class __SMTP_RSET : public SMTPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, std::stringstream &data) { | ||||
|          session.state = READY; | ||||
|          data << "250 OK" << CRLF; | ||||
|          return 0; | ||||
|       } | ||||
|        | ||||
|    }; | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| @ -1,20 +1,20 @@ | ||||
| #ifndef ____SMTP_RSET_h__ | ||||
| #define ____SMTP_RSET_h__ | ||||
| 
 | ||||
| #include "Command.h" | ||||
| #include "SMTPCommand.h" | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class __SMTP_RSET : public core::Command { | ||||
|    class __SMTP_RSET : public SMTPCommand { | ||||
|        | ||||
|       int processCommand(std::string request, Session *session, std::stringstream &data); | ||||
|          state = "READY"; | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, std::stringstream &data) { | ||||
|          session.state = READY; | ||||
|          data << "250 OK" << CRLF; | ||||
|          return 0; | ||||
|       } | ||||
| 
 | ||||
|        | ||||
|    }; | ||||
| 
 | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										11
									
								
								__SMTP_VRFY.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								__SMTP_VRFY.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | ||||
| #include "__SMTP_VRFY.h" | ||||
| 
 | ||||
| namespace mail { | ||||
|     | ||||
|    int __SMTP_VRFY::processCommand(coreutils::PString request, SMTPSession &session, std::stringstream &data) { | ||||
|       data << "252 You must know who the mail is for" << CRLF; | ||||
|       return 0; | ||||
|    } | ||||
|     | ||||
| } | ||||
| 
 | ||||
| @ -1,19 +1,17 @@ | ||||
| #ifndef ____SMTP_VRFY_h__ | ||||
| #define ____SMTP_VRFY_h__ | ||||
| # define ____SMTP_VRFY_h__ | ||||
| 
 | ||||
| #include "Command.h" | ||||
| # include "SMTPCommand.h" | ||||
| # include "PString.h" | ||||
| 
 | ||||
| namespace mail { | ||||
| 
 | ||||
|    class __SMTP_VRFY : public core::Command { | ||||
|     | ||||
|    class __SMTP_VRFY : public SMTPCommand { | ||||
|        | ||||
|       int processCommand(coreutils::PString request, SMTPSession &session, std::stringstream &data); | ||||
|        | ||||
|       int processCommand(std::string request, Session *session, std::stringstream &data) { | ||||
|          data << "252 You must know who the mail is for" << CRLF; | ||||
|          return 0; | ||||
|       } | ||||
| 
 | ||||
|    }; | ||||
| 
 | ||||
|     | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										29
									
								
								compile
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										29
									
								
								compile
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,29 @@ | ||||
| #!/bin/bash | ||||
| 
 | ||||
| for file in *.cpp | ||||
| do | ||||
|    filename="${file%.*}" | ||||
|    list="$list $filename.o"   | ||||
|    echo -n "Compiling $filename..." | ||||
|    g++ -g -c -std=c++17 -I../CoreUtils -I../ServerCore $file  | ||||
|    if [ $? = '0' ] | ||||
|    then | ||||
|     echo "OK" | ||||
|    else | ||||
|     echo "ERROR" | ||||
|     exit -1 | ||||
|    fi       | ||||
| done | ||||
| 
 | ||||
| wait | ||||
| echo -n "Building executable BMAMail..." | ||||
| g++ -g -std=c++17 -o BMAMail $list -L../CoreUtils -lCoreUtils -L../ServerCore -lServerCore -lpthread -luuid -lssl -lcrypto | ||||
| if [ $? = '0' ] | ||||
| then | ||||
|  echo "OK" | ||||
| else | ||||
|  echo "ERROR" | ||||
|  exit -1 | ||||
| fi    | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										2494
									
								
								docs/Doxyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2494
									
								
								docs/Doxyfile
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										111
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,111 @@ | ||||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||||
| <html xmlns="http://www.w3.org/1999/xhtml"> | ||||
| <head> | ||||
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> | ||||
| <meta http-equiv="X-UA-Compatible" content="IE=9"/> | ||||
| <meta name="generator" content="Doxygen 1.8.13"/> | ||||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||||
| <title>BMAMail: /home/bradarant/barant/BMAMail/__IMAP_APPEND.h File Reference</title> | ||||
| <link href="tabs.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="jquery.js"></script> | ||||
| <script type="text/javascript" src="dynsections.js"></script> | ||||
| <link href="search/search.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="search/searchdata.js"></script> | ||||
| <script type="text/javascript" src="search/search.js"></script> | ||||
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> | ||||
| </head> | ||||
| <body> | ||||
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> | ||||
| <div id="titlearea"> | ||||
| <table cellspacing="0" cellpadding="0"> | ||||
|  <tbody> | ||||
|  <tr style="height: 56px;"> | ||||
|   <td id="projectalign" style="padding-left: 0.5em;"> | ||||
|    <div id="projectname">BMAMail | ||||
|     <span id="projectnumber">1.0.0</span> | ||||
|    </div> | ||||
|    <div id="projectbrief">E-Mail System</div> | ||||
|   </td> | ||||
|  </tr> | ||||
|  </tbody> | ||||
| </table> | ||||
| </div> | ||||
| <!-- end header part --> | ||||
| <!-- Generated by Doxygen 1.8.13 --> | ||||
| <script type="text/javascript"> | ||||
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); | ||||
| </script> | ||||
| <script type="text/javascript" src="menudata.js"></script> | ||||
| <script type="text/javascript" src="menu.js"></script> | ||||
| <script type="text/javascript"> | ||||
| $(function() { | ||||
|   initMenu('',true,false,'search.php','Search'); | ||||
|   $(document).ready(function() { init_search(); }); | ||||
| }); | ||||
| </script> | ||||
| <div id="main-nav"></div> | ||||
| <!-- window showing the filter options --> | ||||
| <div id="MSearchSelectWindow" | ||||
|      onmouseover="return searchBox.OnSearchSelectShow()" | ||||
|      onmouseout="return searchBox.OnSearchSelectHide()" | ||||
|      onkeydown="return searchBox.OnSearchSelectKey(event)"> | ||||
| </div> | ||||
| 
 | ||||
| <!-- iframe showing the search results (closed by default) --> | ||||
| <div id="MSearchResultsWindow"> | ||||
| <iframe src="javascript:void(0)" frameborder="0"  | ||||
|         name="MSearchResults" id="MSearchResults"> | ||||
| </iframe> | ||||
| </div> | ||||
| 
 | ||||
| </div><!-- top --> | ||||
| <div class="header"> | ||||
|   <div class="summary"> | ||||
| <a href="#nested-classes">Classes</a> | | ||||
| <a href="#namespaces">Namespaces</a>  </div> | ||||
|   <div class="headertitle"> | ||||
| <div class="title">/home/bradarant/barant/BMAMail/__IMAP_APPEND.h File Reference</div>  </div> | ||||
| </div><!--header--> | ||||
| <div class="contents"> | ||||
| <div class="textblock"><code>#include "<a class="el" href="_i_m_a_p_command_8h_source.html">IMAPCommand.h</a>"</code><br /> | ||||
| <code>#include "<a class="el" href="_i_m_a_p_session_8h_source.html">IMAPSession.h</a>"</code><br /> | ||||
| </div><div class="textblock"><div class="dynheader"> | ||||
| Include dependency graph for __IMAP_APPEND.h:</div> | ||||
| <div class="dyncontent"> | ||||
| <div class="center"><img src="_____i_m_a_p___a_p_p_e_n_d_8h__incl.png" border="0" usemap="#_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___a_p_p_e_n_d_8h" alt=""/></div> | ||||
| <map name="_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___a_p_p_e_n_d_8h" id="_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___a_p_p_e_n_d_8h"> | ||||
| <area shape="rect" id="node2" href="_i_m_a_p_command_8h.html" title="IMAPCommand.h" alt="" coords="129,95,255,121"/> | ||||
| <area shape="rect" id="node5" href="_i_m_a_p_session_8h.html" title="IMAPSession.h" alt="" coords="254,169,367,196"/> | ||||
| </map> | ||||
| </div> | ||||
| </div><div class="textblock"><div class="dynheader"> | ||||
| This graph shows which files directly or indirectly include this file:</div> | ||||
| <div class="dyncontent"> | ||||
| <div class="center"><img src="_____i_m_a_p___a_p_p_e_n_d_8h__dep__incl.png" border="0" usemap="#_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___a_p_p_e_n_d_8hdep" alt=""/></div> | ||||
| <map name="_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___a_p_p_e_n_d_8hdep" id="_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___a_p_p_e_n_d_8hdep"> | ||||
| <area shape="rect" id="node2" href="_i_m_a_p_service_8h.html" title="/home/bradarant/barant\l/BMAMail/IMAPService.h" alt="" coords="22,95,193,136"/> | ||||
| <area shape="rect" id="node3" href="main_8cpp.html" title="/home/bradarant/barant\l/BMAMail/main.cpp" alt="" coords="29,184,185,225"/> | ||||
| </map> | ||||
| </div> | ||||
| </div> | ||||
| <p><a href="_____i_m_a_p___a_p_p_e_n_d_8h_source.html">Go to the source code of this file.</a></p> | ||||
| <table class="memberdecls"> | ||||
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> | ||||
| Classes</h2></td></tr> | ||||
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classmail_1_1_____i_m_a_p___a_p_p_e_n_d.html">mail::__IMAP_APPEND</a></td></tr> | ||||
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | ||||
| </table><table class="memberdecls"> | ||||
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a> | ||||
| Namespaces</h2></td></tr> | ||||
| <tr class="memitem:namespacemail"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemail.html">mail</a></td></tr> | ||||
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | ||||
| </table> | ||||
| </div><!-- contents --> | ||||
| <!-- start footer part --> | ||||
| <hr class="footer"/><address class="footer"><small> | ||||
| Generated by  <a href="http://www.doxygen.org/index.html"> | ||||
| <img class="footer" src="doxygen.png" alt="doxygen"/> | ||||
| </a> 1.8.13 | ||||
| </small></address> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										4
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h__dep__incl.map
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h__dep__incl.map
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| <map id="/home/bradarant/barant/BMAMail/__IMAP_APPEND.h" name="/home/bradarant/barant/BMAMail/__IMAP_APPEND.h"> | ||||
| <area shape="rect" id="node2" href="$_i_m_a_p_service_8h.html" title="/home/bradarant/barant\l/BMAMail/IMAPService.h" alt="" coords="22,95,193,136"/> | ||||
| <area shape="rect" id="node3" href="$main_8cpp.html" title="/home/bradarant/barant\l/BMAMail/main.cpp" alt="" coords="29,184,185,225"/> | ||||
| </map> | ||||
							
								
								
									
										1
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h__dep__incl.md5
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h__dep__incl.md5
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| 22f73b6a82680dc85cb63acda50fcaa8 | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h__dep__incl.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h__dep__incl.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 11 KiB | 
							
								
								
									
										4
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h__incl.map
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h__incl.map
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| <map id="/home/bradarant/barant/BMAMail/__IMAP_APPEND.h" name="/home/bradarant/barant/BMAMail/__IMAP_APPEND.h"> | ||||
| <area shape="rect" id="node2" href="$_i_m_a_p_command_8h.html" title="IMAPCommand.h" alt="" coords="129,95,255,121"/> | ||||
| <area shape="rect" id="node5" href="$_i_m_a_p_session_8h.html" title="IMAPSession.h" alt="" coords="254,169,367,196"/> | ||||
| </map> | ||||
							
								
								
									
										1
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h__incl.md5
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h__incl.md5
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| cd58f15aee07f1189f517c74a37f4eb8 | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h__incl.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h__incl.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 15 KiB | 
							
								
								
									
										82
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h_source.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								docs/html/_____i_m_a_p___a_p_p_e_n_d_8h_source.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,82 @@ | ||||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||||
| <html xmlns="http://www.w3.org/1999/xhtml"> | ||||
| <head> | ||||
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> | ||||
| <meta http-equiv="X-UA-Compatible" content="IE=9"/> | ||||
| <meta name="generator" content="Doxygen 1.8.13"/> | ||||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||||
| <title>BMAMail: /home/bradarant/barant/BMAMail/__IMAP_APPEND.h Source File</title> | ||||
| <link href="tabs.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="jquery.js"></script> | ||||
| <script type="text/javascript" src="dynsections.js"></script> | ||||
| <link href="search/search.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="search/searchdata.js"></script> | ||||
| <script type="text/javascript" src="search/search.js"></script> | ||||
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> | ||||
| </head> | ||||
| <body> | ||||
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> | ||||
| <div id="titlearea"> | ||||
| <table cellspacing="0" cellpadding="0"> | ||||
|  <tbody> | ||||
|  <tr style="height: 56px;"> | ||||
|   <td id="projectalign" style="padding-left: 0.5em;"> | ||||
|    <div id="projectname">BMAMail | ||||
|     <span id="projectnumber">1.0.0</span> | ||||
|    </div> | ||||
|    <div id="projectbrief">E-Mail System</div> | ||||
|   </td> | ||||
|  </tr> | ||||
|  </tbody> | ||||
| </table> | ||||
| </div> | ||||
| <!-- end header part --> | ||||
| <!-- Generated by Doxygen 1.8.13 --> | ||||
| <script type="text/javascript"> | ||||
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); | ||||
| </script> | ||||
| <script type="text/javascript" src="menudata.js"></script> | ||||
| <script type="text/javascript" src="menu.js"></script> | ||||
| <script type="text/javascript"> | ||||
| $(function() { | ||||
|   initMenu('',true,false,'search.php','Search'); | ||||
|   $(document).ready(function() { init_search(); }); | ||||
| }); | ||||
| </script> | ||||
| <div id="main-nav"></div> | ||||
| </div><!-- top --> | ||||
| <!-- window showing the filter options --> | ||||
| <div id="MSearchSelectWindow" | ||||
|      onmouseover="return searchBox.OnSearchSelectShow()" | ||||
|      onmouseout="return searchBox.OnSearchSelectHide()" | ||||
|      onkeydown="return searchBox.OnSearchSelectKey(event)"> | ||||
| </div> | ||||
| 
 | ||||
| <!-- iframe showing the search results (closed by default) --> | ||||
| <div id="MSearchResultsWindow"> | ||||
| <iframe src="javascript:void(0)" frameborder="0"  | ||||
|         name="MSearchResults" id="MSearchResults"> | ||||
| </iframe> | ||||
| </div> | ||||
| 
 | ||||
| <div class="header"> | ||||
|   <div class="headertitle"> | ||||
| <div class="title">/home/bradarant/barant/BMAMail/__IMAP_APPEND.h</div>  </div> | ||||
| </div><!--header--> | ||||
| <div class="contents"> | ||||
| <a href="_____i_m_a_p___a_p_p_e_n_d_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="preprocessor">#ifndef ____IMAP_APPEND_h__</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="preprocessor"># define ____IMAP_APPEND_h__</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span> </div><div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="preprocessor"># include "<a class="code" href="_i_m_a_p_command_8h.html">IMAPCommand.h</a>"</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="preprocessor"># include "<a class="code" href="_i_m_a_p_session_8h.html">IMAPSession.h</a>"</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="namespacemail.html">    7</a></span> <span class="keyword">namespace </span><a class="code" href="namespacemail.html">mail</a> {</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>    </div><div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="classmail_1_1_____i_m_a_p___a_p_p_e_n_d.html">    9</a></span>    <span class="keyword">class </span><a class="code" href="classmail_1_1_____i_m_a_p___a_p_p_e_n_d.html">__IMAP_APPEND</a> : <span class="keyword">public</span> <a class="code" href="classmail_1_1_i_m_a_p_command.html">IMAPCommand</a> {</div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>       </div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>       <span class="keywordtype">int</span> processCommand(coreutils::PString request, <a class="code" href="classmail_1_1_i_m_a_p_session.html">IMAPSession</a> &session, std::stringstream &data) {      </div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>          data << <span class="stringliteral">"250 OK"</span> << <a class="code" href="_s_m_t_p_session_8h.html#a6cb23a858b0a21bdaa644b9181dc415f">CRLF</a>;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>       }</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>       </div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>    };</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>    </div><div class="line"><a name="l00017"></a><span class="lineno">   17</span> }</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span> </div><div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#endif</span></div><div class="ttc" id="_i_m_a_p_command_8h_html"><div class="ttname"><a href="_i_m_a_p_command_8h.html">IMAPCommand.h</a></div></div> | ||||
| <div class="ttc" id="classmail_1_1_____i_m_a_p___a_p_p_e_n_d_html"><div class="ttname"><a href="classmail_1_1_____i_m_a_p___a_p_p_e_n_d.html">mail::__IMAP_APPEND</a></div><div class="ttdef"><b>Definition:</b> __IMAP_APPEND.h:9</div></div> | ||||
| <div class="ttc" id="namespacemail_html"><div class="ttname"><a href="namespacemail.html">mail</a></div><div class="ttdef"><b>Definition:</b> __IMAP_APPEND.h:7</div></div> | ||||
| <div class="ttc" id="classmail_1_1_i_m_a_p_command_html"><div class="ttname"><a href="classmail_1_1_i_m_a_p_command.html">mail::IMAPCommand</a></div><div class="ttdef"><b>Definition:</b> IMAPCommand.h:10</div></div> | ||||
| <div class="ttc" id="_s_m_t_p_session_8h_html_a6cb23a858b0a21bdaa644b9181dc415f"><div class="ttname"><a href="_s_m_t_p_session_8h.html#a6cb23a858b0a21bdaa644b9181dc415f">CRLF</a></div><div class="ttdeci">#define CRLF</div><div class="ttdef"><b>Definition:</b> SMTPSession.h:7</div></div> | ||||
| <div class="ttc" id="_i_m_a_p_session_8h_html"><div class="ttname"><a href="_i_m_a_p_session_8h.html">IMAPSession.h</a></div></div> | ||||
| <div class="ttc" id="classmail_1_1_i_m_a_p_session_html"><div class="ttname"><a href="classmail_1_1_i_m_a_p_session.html">mail::IMAPSession</a></div><div class="ttdef"><b>Definition:</b> IMAPSession.h:6</div></div> | ||||
| </div><!-- fragment --></div><!-- contents --> | ||||
| <!-- start footer part --> | ||||
| <hr class="footer"/><address class="footer"><small> | ||||
| Generated by  <a href="http://www.doxygen.org/index.html"> | ||||
| <img class="footer" src="doxygen.png" alt="doxygen"/> | ||||
| </a> 1.8.13 | ||||
| </small></address> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										111
									
								
								docs/html/_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8h.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								docs/html/_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8h.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,111 @@ | ||||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||||
| <html xmlns="http://www.w3.org/1999/xhtml"> | ||||
| <head> | ||||
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> | ||||
| <meta http-equiv="X-UA-Compatible" content="IE=9"/> | ||||
| <meta name="generator" content="Doxygen 1.8.13"/> | ||||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||||
| <title>BMAMail: /home/bradarant/barant/BMAMail/__IMAP_AUTHENTICATE.h File Reference</title> | ||||
| <link href="tabs.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="jquery.js"></script> | ||||
| <script type="text/javascript" src="dynsections.js"></script> | ||||
| <link href="search/search.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="search/searchdata.js"></script> | ||||
| <script type="text/javascript" src="search/search.js"></script> | ||||
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> | ||||
| </head> | ||||
| <body> | ||||
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> | ||||
| <div id="titlearea"> | ||||
| <table cellspacing="0" cellpadding="0"> | ||||
|  <tbody> | ||||
|  <tr style="height: 56px;"> | ||||
|   <td id="projectalign" style="padding-left: 0.5em;"> | ||||
|    <div id="projectname">BMAMail | ||||
|     <span id="projectnumber">1.0.0</span> | ||||
|    </div> | ||||
|    <div id="projectbrief">E-Mail System</div> | ||||
|   </td> | ||||
|  </tr> | ||||
|  </tbody> | ||||
| </table> | ||||
| </div> | ||||
| <!-- end header part --> | ||||
| <!-- Generated by Doxygen 1.8.13 --> | ||||
| <script type="text/javascript"> | ||||
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); | ||||
| </script> | ||||
| <script type="text/javascript" src="menudata.js"></script> | ||||
| <script type="text/javascript" src="menu.js"></script> | ||||
| <script type="text/javascript"> | ||||
| $(function() { | ||||
|   initMenu('',true,false,'search.php','Search'); | ||||
|   $(document).ready(function() { init_search(); }); | ||||
| }); | ||||
| </script> | ||||
| <div id="main-nav"></div> | ||||
| <!-- window showing the filter options --> | ||||
| <div id="MSearchSelectWindow" | ||||
|      onmouseover="return searchBox.OnSearchSelectShow()" | ||||
|      onmouseout="return searchBox.OnSearchSelectHide()" | ||||
|      onkeydown="return searchBox.OnSearchSelectKey(event)"> | ||||
| </div> | ||||
| 
 | ||||
| <!-- iframe showing the search results (closed by default) --> | ||||
| <div id="MSearchResultsWindow"> | ||||
| <iframe src="javascript:void(0)" frameborder="0"  | ||||
|         name="MSearchResults" id="MSearchResults"> | ||||
| </iframe> | ||||
| </div> | ||||
| 
 | ||||
| </div><!-- top --> | ||||
| <div class="header"> | ||||
|   <div class="summary"> | ||||
| <a href="#nested-classes">Classes</a> | | ||||
| <a href="#namespaces">Namespaces</a>  </div> | ||||
|   <div class="headertitle"> | ||||
| <div class="title">/home/bradarant/barant/BMAMail/__IMAP_AUTHENTICATE.h File Reference</div>  </div> | ||||
| </div><!--header--> | ||||
| <div class="contents"> | ||||
| <div class="textblock"><code>#include "<a class="el" href="_i_m_a_p_command_8h_source.html">IMAPCommand.h</a>"</code><br /> | ||||
| <code>#include "<a class="el" href="_i_m_a_p_session_8h_source.html">IMAPSession.h</a>"</code><br /> | ||||
| </div><div class="textblock"><div class="dynheader"> | ||||
| Include dependency graph for __IMAP_AUTHENTICATE.h:</div> | ||||
| <div class="dyncontent"> | ||||
| <div class="center"><img src="_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8h__incl.png" border="0" usemap="#_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8h" alt=""/></div> | ||||
| <map name="_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8h" id="_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8h"> | ||||
| <area shape="rect" id="node2" href="_i_m_a_p_command_8h.html" title="IMAPCommand.h" alt="" coords="129,95,255,121"/> | ||||
| <area shape="rect" id="node5" href="_i_m_a_p_session_8h.html" title="IMAPSession.h" alt="" coords="254,169,367,196"/> | ||||
| </map> | ||||
| </div> | ||||
| </div><div class="textblock"><div class="dynheader"> | ||||
| This graph shows which files directly or indirectly include this file:</div> | ||||
| <div class="dyncontent"> | ||||
| <div class="center"><img src="_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8h__dep__incl.png" border="0" usemap="#_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8hdep" alt=""/></div> | ||||
| <map name="_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8hdep" id="_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8hdep"> | ||||
| <area shape="rect" id="node2" href="_i_m_a_p_service_8h.html" title="/home/bradarant/barant\l/BMAMail/IMAPService.h" alt="" coords="46,95,217,136"/> | ||||
| <area shape="rect" id="node3" href="main_8cpp.html" title="/home/bradarant/barant\l/BMAMail/main.cpp" alt="" coords="53,184,209,225"/> | ||||
| </map> | ||||
| </div> | ||||
| </div> | ||||
| <p><a href="_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8h_source.html">Go to the source code of this file.</a></p> | ||||
| <table class="memberdecls"> | ||||
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> | ||||
| Classes</h2></td></tr> | ||||
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classmail_1_1_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e.html">mail::__IMAP_AUTHENTICATE</a></td></tr> | ||||
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | ||||
| </table><table class="memberdecls"> | ||||
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a> | ||||
| Namespaces</h2></td></tr> | ||||
| <tr class="memitem:namespacemail"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemail.html">mail</a></td></tr> | ||||
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | ||||
| </table> | ||||
| </div><!-- contents --> | ||||
| <!-- start footer part --> | ||||
| <hr class="footer"/><address class="footer"><small> | ||||
| Generated by  <a href="http://www.doxygen.org/index.html"> | ||||
| <img class="footer" src="doxygen.png" alt="doxygen"/> | ||||
| </a> 1.8.13 | ||||
| </small></address> | ||||
| </body> | ||||
| </html> | ||||
| @ -0,0 +1,4 @@ | ||||
| <map id="/home/bradarant/barant/BMAMail/__IMAP_AUTHENTICATE.h" name="/home/bradarant/barant/BMAMail/__IMAP_AUTHENTICATE.h"> | ||||
| <area shape="rect" id="node2" href="$_i_m_a_p_service_8h.html" title="/home/bradarant/barant\l/BMAMail/IMAPService.h" alt="" coords="46,95,217,136"/> | ||||
| <area shape="rect" id="node3" href="$main_8cpp.html" title="/home/bradarant/barant\l/BMAMail/main.cpp" alt="" coords="53,184,209,225"/> | ||||
| </map> | ||||
| @ -0,0 +1 @@ | ||||
| 5aefedb62eaf0aa8df6f0ec27f6197bd | ||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 12 KiB | 
| @ -0,0 +1,4 @@ | ||||
| <map id="/home/bradarant/barant/BMAMail/__IMAP_AUTHENTICATE.h" name="/home/bradarant/barant/BMAMail/__IMAP_AUTHENTICATE.h"> | ||||
| <area shape="rect" id="node2" href="$_i_m_a_p_command_8h.html" title="IMAPCommand.h" alt="" coords="129,95,255,121"/> | ||||
| <area shape="rect" id="node5" href="$_i_m_a_p_session_8h.html" title="IMAPSession.h" alt="" coords="254,169,367,196"/> | ||||
| </map> | ||||
| @ -0,0 +1 @@ | ||||
| 62ff7e3fdbdb1928db6d124adecf1185 | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/html/_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8h__incl.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/html/_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8h__incl.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 14 KiB | 
| @ -0,0 +1,82 @@ | ||||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||||
| <html xmlns="http://www.w3.org/1999/xhtml"> | ||||
| <head> | ||||
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> | ||||
| <meta http-equiv="X-UA-Compatible" content="IE=9"/> | ||||
| <meta name="generator" content="Doxygen 1.8.13"/> | ||||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||||
| <title>BMAMail: /home/bradarant/barant/BMAMail/__IMAP_AUTHENTICATE.h Source File</title> | ||||
| <link href="tabs.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="jquery.js"></script> | ||||
| <script type="text/javascript" src="dynsections.js"></script> | ||||
| <link href="search/search.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="search/searchdata.js"></script> | ||||
| <script type="text/javascript" src="search/search.js"></script> | ||||
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> | ||||
| </head> | ||||
| <body> | ||||
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> | ||||
| <div id="titlearea"> | ||||
| <table cellspacing="0" cellpadding="0"> | ||||
|  <tbody> | ||||
|  <tr style="height: 56px;"> | ||||
|   <td id="projectalign" style="padding-left: 0.5em;"> | ||||
|    <div id="projectname">BMAMail | ||||
|     <span id="projectnumber">1.0.0</span> | ||||
|    </div> | ||||
|    <div id="projectbrief">E-Mail System</div> | ||||
|   </td> | ||||
|  </tr> | ||||
|  </tbody> | ||||
| </table> | ||||
| </div> | ||||
| <!-- end header part --> | ||||
| <!-- Generated by Doxygen 1.8.13 --> | ||||
| <script type="text/javascript"> | ||||
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); | ||||
| </script> | ||||
| <script type="text/javascript" src="menudata.js"></script> | ||||
| <script type="text/javascript" src="menu.js"></script> | ||||
| <script type="text/javascript"> | ||||
| $(function() { | ||||
|   initMenu('',true,false,'search.php','Search'); | ||||
|   $(document).ready(function() { init_search(); }); | ||||
| }); | ||||
| </script> | ||||
| <div id="main-nav"></div> | ||||
| </div><!-- top --> | ||||
| <!-- window showing the filter options --> | ||||
| <div id="MSearchSelectWindow" | ||||
|      onmouseover="return searchBox.OnSearchSelectShow()" | ||||
|      onmouseout="return searchBox.OnSearchSelectHide()" | ||||
|      onkeydown="return searchBox.OnSearchSelectKey(event)"> | ||||
| </div> | ||||
| 
 | ||||
| <!-- iframe showing the search results (closed by default) --> | ||||
| <div id="MSearchResultsWindow"> | ||||
| <iframe src="javascript:void(0)" frameborder="0"  | ||||
|         name="MSearchResults" id="MSearchResults"> | ||||
| </iframe> | ||||
| </div> | ||||
| 
 | ||||
| <div class="header"> | ||||
|   <div class="headertitle"> | ||||
| <div class="title">/home/bradarant/barant/BMAMail/__IMAP_AUTHENTICATE.h</div>  </div> | ||||
| </div><!--header--> | ||||
| <div class="contents"> | ||||
| <a href="_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="preprocessor">#ifndef ____IMAP_AUTHENTICATE_h__</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="preprocessor"># define ____IMAP_AUTHENTICATE_h__</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span> </div><div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="preprocessor"># include "<a class="code" href="_i_m_a_p_command_8h.html">IMAPCommand.h</a>"</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="preprocessor"># include "<a class="code" href="_i_m_a_p_session_8h.html">IMAPSession.h</a>"</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span> </div><div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="keyword">namespace </span><a class="code" href="namespacemail.html">mail</a> {</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>    </div><div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="classmail_1_1_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e.html">    9</a></span>    <span class="keyword">class </span><a class="code" href="classmail_1_1_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e.html">__IMAP_AUTHENTICATE</a> : <span class="keyword">public</span> <a class="code" href="classmail_1_1_i_m_a_p_command.html">IMAPCommand</a> {</div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>       </div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>       <span class="keywordtype">int</span> processCommand(coreutils::PString request, <a class="code" href="classmail_1_1_i_m_a_p_session.html">IMAPSession</a> &session, std::stringstream &data) {      </div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>          data << <span class="stringliteral">"250 OK"</span> << <a class="code" href="_s_m_t_p_session_8h.html#a6cb23a858b0a21bdaa644b9181dc415f">CRLF</a>;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>       }</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>       </div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>    };</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>    </div><div class="line"><a name="l00017"></a><span class="lineno">   17</span> }</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span> </div><div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#endif</span></div><div class="ttc" id="_i_m_a_p_command_8h_html"><div class="ttname"><a href="_i_m_a_p_command_8h.html">IMAPCommand.h</a></div></div> | ||||
| <div class="ttc" id="namespacemail_html"><div class="ttname"><a href="namespacemail.html">mail</a></div><div class="ttdef"><b>Definition:</b> __IMAP_APPEND.h:7</div></div> | ||||
| <div class="ttc" id="classmail_1_1_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e_html"><div class="ttname"><a href="classmail_1_1_____i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_e.html">mail::__IMAP_AUTHENTICATE</a></div><div class="ttdef"><b>Definition:</b> __IMAP_AUTHENTICATE.h:9</div></div> | ||||
| <div class="ttc" id="classmail_1_1_i_m_a_p_command_html"><div class="ttname"><a href="classmail_1_1_i_m_a_p_command.html">mail::IMAPCommand</a></div><div class="ttdef"><b>Definition:</b> IMAPCommand.h:10</div></div> | ||||
| <div class="ttc" id="_s_m_t_p_session_8h_html_a6cb23a858b0a21bdaa644b9181dc415f"><div class="ttname"><a href="_s_m_t_p_session_8h.html#a6cb23a858b0a21bdaa644b9181dc415f">CRLF</a></div><div class="ttdeci">#define CRLF</div><div class="ttdef"><b>Definition:</b> SMTPSession.h:7</div></div> | ||||
| <div class="ttc" id="_i_m_a_p_session_8h_html"><div class="ttname"><a href="_i_m_a_p_session_8h.html">IMAPSession.h</a></div></div> | ||||
| <div class="ttc" id="classmail_1_1_i_m_a_p_session_html"><div class="ttname"><a href="classmail_1_1_i_m_a_p_session.html">mail::IMAPSession</a></div><div class="ttdef"><b>Definition:</b> IMAPSession.h:6</div></div> | ||||
| </div><!-- fragment --></div><!-- contents --> | ||||
| <!-- start footer part --> | ||||
| <hr class="footer"/><address class="footer"><small> | ||||
| Generated by  <a href="http://www.doxygen.org/index.html"> | ||||
| <img class="footer" src="doxygen.png" alt="doxygen"/> | ||||
| </a> 1.8.13 | ||||
| </small></address> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										111
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,111 @@ | ||||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||||
| <html xmlns="http://www.w3.org/1999/xhtml"> | ||||
| <head> | ||||
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> | ||||
| <meta http-equiv="X-UA-Compatible" content="IE=9"/> | ||||
| <meta name="generator" content="Doxygen 1.8.13"/> | ||||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||||
| <title>BMAMail: /home/bradarant/barant/BMAMail/__IMAP_CHECK.h File Reference</title> | ||||
| <link href="tabs.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="jquery.js"></script> | ||||
| <script type="text/javascript" src="dynsections.js"></script> | ||||
| <link href="search/search.css" rel="stylesheet" type="text/css"/> | ||||
| <script type="text/javascript" src="search/searchdata.js"></script> | ||||
| <script type="text/javascript" src="search/search.js"></script> | ||||
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> | ||||
| </head> | ||||
| <body> | ||||
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> | ||||
| <div id="titlearea"> | ||||
| <table cellspacing="0" cellpadding="0"> | ||||
|  <tbody> | ||||
|  <tr style="height: 56px;"> | ||||
|   <td id="projectalign" style="padding-left: 0.5em;"> | ||||
|    <div id="projectname">BMAMail | ||||
|     <span id="projectnumber">1.0.0</span> | ||||
|    </div> | ||||
|    <div id="projectbrief">E-Mail System</div> | ||||
|   </td> | ||||
|  </tr> | ||||
|  </tbody> | ||||
| </table> | ||||
| </div> | ||||
| <!-- end header part --> | ||||
| <!-- Generated by Doxygen 1.8.13 --> | ||||
| <script type="text/javascript"> | ||||
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); | ||||
| </script> | ||||
| <script type="text/javascript" src="menudata.js"></script> | ||||
| <script type="text/javascript" src="menu.js"></script> | ||||
| <script type="text/javascript"> | ||||
| $(function() { | ||||
|   initMenu('',true,false,'search.php','Search'); | ||||
|   $(document).ready(function() { init_search(); }); | ||||
| }); | ||||
| </script> | ||||
| <div id="main-nav"></div> | ||||
| <!-- window showing the filter options --> | ||||
| <div id="MSearchSelectWindow" | ||||
|      onmouseover="return searchBox.OnSearchSelectShow()" | ||||
|      onmouseout="return searchBox.OnSearchSelectHide()" | ||||
|      onkeydown="return searchBox.OnSearchSelectKey(event)"> | ||||
| </div> | ||||
| 
 | ||||
| <!-- iframe showing the search results (closed by default) --> | ||||
| <div id="MSearchResultsWindow"> | ||||
| <iframe src="javascript:void(0)" frameborder="0"  | ||||
|         name="MSearchResults" id="MSearchResults"> | ||||
| </iframe> | ||||
| </div> | ||||
| 
 | ||||
| </div><!-- top --> | ||||
| <div class="header"> | ||||
|   <div class="summary"> | ||||
| <a href="#nested-classes">Classes</a> | | ||||
| <a href="#namespaces">Namespaces</a>  </div> | ||||
|   <div class="headertitle"> | ||||
| <div class="title">/home/bradarant/barant/BMAMail/__IMAP_CHECK.h File Reference</div>  </div> | ||||
| </div><!--header--> | ||||
| <div class="contents"> | ||||
| <div class="textblock"><code>#include "<a class="el" href="_i_m_a_p_command_8h_source.html">IMAPCommand.h</a>"</code><br /> | ||||
| <code>#include "<a class="el" href="_i_m_a_p_session_8h_source.html">IMAPSession.h</a>"</code><br /> | ||||
| </div><div class="textblock"><div class="dynheader"> | ||||
| Include dependency graph for __IMAP_CHECK.h:</div> | ||||
| <div class="dyncontent"> | ||||
| <div class="center"><img src="_____i_m_a_p___c_h_e_c_k_8h__incl.png" border="0" usemap="#_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___c_h_e_c_k_8h" alt=""/></div> | ||||
| <map name="_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___c_h_e_c_k_8h" id="_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___c_h_e_c_k_8h"> | ||||
| <area shape="rect" id="node2" href="_i_m_a_p_command_8h.html" title="IMAPCommand.h" alt="" coords="129,95,255,121"/> | ||||
| <area shape="rect" id="node5" href="_i_m_a_p_session_8h.html" title="IMAPSession.h" alt="" coords="254,169,367,196"/> | ||||
| </map> | ||||
| </div> | ||||
| </div><div class="textblock"><div class="dynheader"> | ||||
| This graph shows which files directly or indirectly include this file:</div> | ||||
| <div class="dyncontent"> | ||||
| <div class="center"><img src="_____i_m_a_p___c_h_e_c_k_8h__dep__incl.png" border="0" usemap="#_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___c_h_e_c_k_8hdep" alt=""/></div> | ||||
| <map name="_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___c_h_e_c_k_8hdep" id="_2home_2bradarant_2barant_2_b_m_a_mail_2_____i_m_a_p___c_h_e_c_k_8hdep"> | ||||
| <area shape="rect" id="node2" href="_i_m_a_p_service_8h.html" title="/home/bradarant/barant\l/BMAMail/IMAPService.h" alt="" coords="18,95,189,136"/> | ||||
| <area shape="rect" id="node3" href="main_8cpp.html" title="/home/bradarant/barant\l/BMAMail/main.cpp" alt="" coords="25,184,181,225"/> | ||||
| </map> | ||||
| </div> | ||||
| </div> | ||||
| <p><a href="_____i_m_a_p___c_h_e_c_k_8h_source.html">Go to the source code of this file.</a></p> | ||||
| <table class="memberdecls"> | ||||
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> | ||||
| Classes</h2></td></tr> | ||||
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classmail_1_1_____i_m_a_p___c_h_e_c_k.html">mail::__IMAP_CHECK</a></td></tr> | ||||
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | ||||
| </table><table class="memberdecls"> | ||||
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a> | ||||
| Namespaces</h2></td></tr> | ||||
| <tr class="memitem:namespacemail"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemail.html">mail</a></td></tr> | ||||
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | ||||
| </table> | ||||
| </div><!-- contents --> | ||||
| <!-- start footer part --> | ||||
| <hr class="footer"/><address class="footer"><small> | ||||
| Generated by  <a href="http://www.doxygen.org/index.html"> | ||||
| <img class="footer" src="doxygen.png" alt="doxygen"/> | ||||
| </a> 1.8.13 | ||||
| </small></address> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										4
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h__dep__incl.map
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h__dep__incl.map
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| <map id="/home/bradarant/barant/BMAMail/__IMAP_CHECK.h" name="/home/bradarant/barant/BMAMail/__IMAP_CHECK.h"> | ||||
| <area shape="rect" id="node2" href="$_i_m_a_p_service_8h.html" title="/home/bradarant/barant\l/BMAMail/IMAPService.h" alt="" coords="18,95,189,136"/> | ||||
| <area shape="rect" id="node3" href="$main_8cpp.html" title="/home/bradarant/barant\l/BMAMail/main.cpp" alt="" coords="25,184,181,225"/> | ||||
| </map> | ||||
							
								
								
									
										1
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h__dep__incl.md5
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h__dep__incl.md5
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| a2880e4fcfb4fa8de1a024671205822a | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h__dep__incl.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h__dep__incl.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 11 KiB | 
							
								
								
									
										4
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h__incl.map
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h__incl.map
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| <map id="/home/bradarant/barant/BMAMail/__IMAP_CHECK.h" name="/home/bradarant/barant/BMAMail/__IMAP_CHECK.h"> | ||||
| <area shape="rect" id="node2" href="$_i_m_a_p_command_8h.html" title="IMAPCommand.h" alt="" coords="129,95,255,121"/> | ||||
| <area shape="rect" id="node5" href="$_i_m_a_p_session_8h.html" title="IMAPSession.h" alt="" coords="254,169,367,196"/> | ||||
| </map> | ||||
							
								
								
									
										1
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h__incl.md5
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h__incl.md5
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| 6caede9e0cd14de85fe7fb0dc70e152b | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h__incl.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/html/_____i_m_a_p___c_h_e_c_k_8h__incl.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 15 KiB | 
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user