Beispiel #1
0
 /// <summary>
 /// TopLines constructor.
 /// </summary>
 /// <param name="session">Reference to pop3 session.</param>
 /// <param name="message">Message which to get.</param>
 /// <param name="socket">Connected socket.</param>
 /// <param name="nLines">Number of lines to get.</param>
 public POP3_Message_EventArgs(POP3_Session session, POP3_Message message, Socket socket, int nLines)
 {
     m_pSession = session;
     m_pMessage = message;
     m_pSocket  = socket;
     m_Lines    = nLines;
 }
 /// <summary>
 /// Default constructor.
 /// </summary>
 /// <param name="session">Reference to pop3 session.</param>
 /// <param name="userName">Username.</param>
 /// <param name="passwData">Password data.</param>
 /// <param name="data">Authentication specific data(as tag).</param>
 /// <param name="authType">Authentication type.</param>
 public AuthUser_EventArgs(POP3_Session session, string userName, string passwData, string data, AuthType authType)
 {
     m_pSession  = session;
     m_UserName  = userName;
     m_PasswData = passwData;
     m_Data      = data;
     m_AuthType  = authType;
 }
		/// <summary>
		/// Default constructor.
		/// </summary>
		/// <param name="session">Reference to pop3 session.</param>
		/// <param name="userName">Username.</param>
		/// <param name="passwData">Password data.</param>
		/// <param name="data">Authentication specific data(as tag).</param>
		/// <param name="authType">Authentication type.</param>
		public AuthUser_EventArgs(POP3_Session session,string userName,string passwData,string data,AuthType authType)
		{
			m_pSession  = session;
			m_UserName  = userName;
			m_PasswData = passwData;
			m_Data      = data;
			m_AuthType  = authType;
		}
Beispiel #4
0
        /// <summary>
        /// Gest pop3 messages info.
        /// </summary>
        /// <param name="session"></param>
        /// <param name="messages"></param>
        internal virtual void OnGetMessagesInfo(POP3_Session session, POP3_Messages messages)
        {
            GetMessagesInfo_EventArgs oArg = new GetMessagesInfo_EventArgs(session, messages, session.UserName);

            if (this.GetMessgesList != null)
            {
                this.GetMessgesList(this, oArg);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Raises event GetTopLines.
        /// </summary>
        /// <param name="session"></param>
        /// <param name="message">Message wich top lines to get.</param>
        /// <param name="nLines">Header + number of body lines to get.</param>
        /// <returns></returns>
        internal byte[] OnGetTopLines(POP3_Session session, POP3_Message message, int nLines)
        {
            POP3_Message_EventArgs oArgs = new POP3_Message_EventArgs(session, message, null, nLines);

            if (this.GetTopLines != null)
            {
                this.GetTopLines(this, oArgs);
            }
            return(oArgs.MessageData);
        }
        /// <summary>
        /// Raises event 'GetMessageStream'.
        /// </summary>
        /// <param name="session">Reference to POP3 session.</param>
        /// <param name="messageInfo">Message info what message stream to get.</param>
        /// <returns></returns>
        internal POP3_eArgs_GetMessageStream OnGetMessageStream(POP3_Session session, POP3_Message messageInfo)
        {
            POP3_eArgs_GetMessageStream eArgs = new POP3_eArgs_GetMessageStream(session, messageInfo);

            if (this.GetMessageStream != null)
            {
                this.GetMessageStream(this, eArgs);
            }
            return(eArgs);
        }
Beispiel #7
0
        /// <summary>
        /// Raises delete message event.
        /// </summary>
        /// <param name="session"></param>
        /// <param name="message">Message which to delete.</param>
        /// <returns></returns>
        internal virtual bool OnDeleteMessage(POP3_Session session, POP3_Message message)
        {
            POP3_Message_EventArgs oArg = new POP3_Message_EventArgs(session, message, null);

            if (this.DeleteMessage != null)
            {
                this.DeleteMessage(this, oArg);
            }

            return(true);
        }
Beispiel #8
0
        /// <summary>
        /// Raises event get message.
        /// </summary>
        /// <param name="session"></param>
        /// <param name="message">Message which to get.</param>
        /// <param name="sessionSocket">Message which to get.</param>
        /// <returns></returns>
        internal virtual byte[] OnGetMail(POP3_Session session, POP3_Message message, Socket sessionSocket)
        {
            POP3_Message_EventArgs oArg = new POP3_Message_EventArgs(session, message, sessionSocket);

            if (this.GetMessage != null)
            {
                this.GetMessage(this, oArg);
            }

            return(oArg.MessageData);
        }
Beispiel #9
0
        /// <summary>
        /// Authenticates user.
        /// </summary>
        /// <param name="session">Reference to current pop3 session.</param>
        /// <param name="userName">User name.</param>
        /// <param name="passwData"></param>
        /// <param name="data"></param>
        /// <param name="authType"></param>
        /// <returns></returns>
        internal virtual bool OnAuthUser(POP3_Session session, string userName, string passwData, string data, AuthType authType)
        {
            AuthUser_EventArgs oArg = new AuthUser_EventArgs(session, userName, passwData, data, authType);

            if (this.AuthUser != null)
            {
                this.AuthUser(this, oArg);
            }

            return(oArg.Validated);
        }
        /// <summary>
        /// Initialize and start new session here. Session isn't added to session list automatically,
        /// session must add itself to server session list by calling AddSession().
        /// </summary>
        /// <param name="socket">Connected client socket.</param>
        /// <param name="bindInfo">BindInfo what accepted socket.</param>
        protected override void InitNewSession(Socket socket, IPBindInfo bindInfo)
        {
            // Check maximum conncurent connections from 1 IP.
            if (m_MaxConnectionsPerIP > 0)
            {
                lock (this.Sessions){
                    int nSessions = 0;
                    foreach (SocketServerSession s in this.Sessions)
                    {
                        IPEndPoint ipEndpoint = s.RemoteEndPoint;
                        if (ipEndpoint != null)
                        {
                            if (ipEndpoint.Address.Equals(((IPEndPoint)socket.RemoteEndPoint).Address))
                            {
                                nSessions++;
                            }
                        }

                        // Maximum allowed exceeded
                        if (nSessions >= m_MaxConnectionsPerIP)
                        {
                            socket.Send(System.Text.Encoding.ASCII.GetBytes("-ERR Maximum connections from your IP address is exceeded, try again later !\r\n"));
                            socket.Shutdown(SocketShutdown.Both);
                            socket.Close();
                            return;
                        }
                    }
                }
            }

            string   sessionID = Guid.NewGuid().ToString();
            SocketEx socketEx  = new SocketEx(socket);

            if (LogCommands)
            {
                socketEx.Logger           = new SocketLogger(socket, this.SessionLog);
                socketEx.Logger.SessionID = sessionID;
            }
            POP3_Session session = new POP3_Session(sessionID, socketEx, bindInfo, this);
        }
Beispiel #11
0
 /// <summary>
 /// Default constructor.
 /// </summary>
 /// <param name="session">Reference to pop3 session.</param>
 /// <param name="message">Message which to get.</param>
 /// <param name="socket">Connected socket.</param>
 public POP3_Message_EventArgs(POP3_Session session, POP3_Message message, Socket socket)
 {
     m_pSession = session;
     m_pMessage = message;
     m_pSocket  = socket;
 }
Beispiel #12
0
 /// <summary>
 /// Default constructor.
 /// </summary>
 /// <param name="session">Reference to current POP3 session.</param>
 /// <param name="messageInfo">Message info what message items to get.</param>
 public POP3_eArgs_GetMessageStream(POP3_Session session, POP3_Message messageInfo)
 {
     m_pSession     = session;
     m_pMessageInfo = messageInfo;
 }
Beispiel #13
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="socket"></param>
 protected override void InitNewSession(Socket socket)
 {
     _LogWriter   logWriter = new _LogWriter(this.SessionLog);
     POP3_Session session   = new POP3_Session(socket, this, logWriter);
 }
 /// <summary>
 /// Default constructor.
 /// </summary>
 /// <param name="session">Reference to pop3 session.</param>
 /// <param name="messages"></param>
 /// <param name="mailbox">Mailbox name.</param>
 public GetMessagesInfo_EventArgs(POP3_Session session, POP3_MessageCollection messages, string mailbox)
 {
     m_pSession = session;
     m_pPOP3_Messages = messages;
     m_UserName = mailbox;
 }
 /// <summary>
 /// Default constructor.
 /// </summary>
 /// <param name="session">Reference to pop3 session.</param>
 /// <param name="messages"></param>
 /// <param name="mailbox">Mailbox name.</param>
 public GetMessagesInfo_EventArgs(POP3_Session session, POP3_MessageCollection messages, string mailbox)
 {
     m_pSession       = session;
     m_pPOP3_Messages = messages;
     m_UserName       = mailbox;
 }