Пример #1
0
 public void SendData(NetworkMsg Msg)
 {
     byte[] bytes = null;
     bytes = Serialization.Serialize(Msg, Msg);
     bytes = Encode(bytes);
     TCPSocket.SendData(bytes);
 }
Пример #2
0
        protected void SendCommand(String Command)
        {
            var CommandBytes = Encoding.UTF8.GetBytes(Command + "\r\n");

            TCPSocket.Poll(SelectMode.SelectWrite, CancellationToken.Value);
            Stream.Write(CommandBytes, 0, CommandBytes.Length);
        }
Пример #3
0
        public void TestPortInUse()
        {
            hMailServer.Application application = SingletonProvider <Utilities> .Instance.GetApp();

            application.Stop();

            var serverSocket = new ServerSocket(1, 25);

            serverSocket.StartListen();

            application.Start();
            TCPSocket sock = new TCPSocket();

            // make sure it's possible to connect to the non blocked port.

            sock.CanConnect(110);
            sock.CanConnect(143);

            //let this our temp server die.
            sock.CanConnect(25);

            // make sure that hMailServer reported an error during start up because the ports were blocked.
            Utilities.AssertReportedError();

            // restart hMailServer again. everything is now back to normal.
            application.Stop();
            application.Start();
            sock.CanConnect(25);
        }
Пример #4
0
 public Node(StreamPacketizer p, TCPSocket s)
 {
     socket     = s;
     packetizer = p;
     thr        = new Thread(Run);
     thr.Start();
 }
Пример #5
0
        public void TestLongLineInIMAPConversation()
        {
            // hMailServer is kind and allows up to 1000000 octets.
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < 100000; i++)
            {
                sb.Append("1234567890");
            }

            sb.Append(".com\r\n");

            string command = "A03 NOOP " + sb.ToString();

            TCPSocket socket = new TCPSocket();
            Assert.IsTrue(socket.Connect(143));
            socket.Receive();
            socket.Send(command);

            try
            {
                string response = socket.Receive();
                Assert.IsTrue(response.StartsWith("* BYE"));
            }
            catch (System.Net.Sockets.SocketException ex)
            {
                Assert.IsTrue(ex.ErrorCode == 10054);
            }

            socket.Disconnect();
        }
Пример #6
0
        public void TestLongSMTPCommand()
        {
            TCPSocket socket = new TCPSocket();

            socket.Connect(25);

            // Build a large string...
            StringBuilder sb = new StringBuilder();

            sb.Append("A01");
            for (int i = 0; i < 1000000; i++)
            {
                sb.Append("01234567890");
            }
            int length = sb.Length;

            sb.Append(Environment.NewLine);

            for (int i = 0; i < 100; i++)
            {
                try
                {
                    socket.Send(sb.ToString());
                }
                catch (Exception)
                {
                    return;
                }
            }

            socket.Send("\r\n");
            string result = socket.Receive();

            socket.Disconnect();
        }
Пример #7
0
        public void TestLongLineInPOP3Conversation()
        {
            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < 400; i++)
            {
                sb.Append("1234567890");
            }

            sb.Append(".com");

            string command = "NOOP " + sb.ToString();

            TCPSocket socket = new TCPSocket();

            Assert.IsTrue(socket.Connect(110));
            socket.Receive();
            socket.Send(command + "\r\n");

            string response = socket.Receive();

            Assert.IsFalse(response.StartsWith("+OK"));

            socket.Disconnect();
        }
Пример #8
0
        public void TestLongLineInIMAPConversation()
        {
            // hMailServer is kind and allows up to 1000000 octets.
            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < 100000; i++)
            {
                sb.Append("1234567890");
            }

            sb.Append(".com\r\n");

            string command = "A03 NOOP " + sb.ToString();

            TCPSocket socket = new TCPSocket();

            Assert.IsTrue(socket.Connect(143));
            socket.Receive();
            socket.Send(command);

            try
            {
                string response = socket.Receive();
                Assert.IsTrue(response.StartsWith("* BYE"));
            }
            catch (System.Net.Sockets.SocketException ex)
            {
                Assert.IsTrue(ex.ErrorCode == 10054);
            }


            socket.Disconnect();
        }
Пример #9
0
        public void SetupSSLPort()
        {
            _application.Settings.Logging.Enabled  = true;
            _application.Settings.Logging.LogTCPIP = true;
            _application.Settings.Logging.EnableLiveLogging(true);

            TCPSocket cs = new TCPSocket();

            if (!cs.Connect(250))
            {
                Assert.Fail("Could not connect to SSL server.");
            }

            cs.Disconnect();

            for (int i = 0; i <= 40; i++)
            {
                Assert.IsTrue(i != 40);

                string liveLog = _application.Settings.Logging.LiveLog;
                if (liveLog.Contains("SSL handshake with client failed."))
                {
                    break;
                }

                Thread.Sleep(250);
            }

            _application.Settings.Logging.EnableLiveLogging(false);
        }
Пример #10
0
 /// <summary>
 /// 关闭所有服务
 /// </summary>
 public void CloseServer()
 {
     try
     {
         //锁定
         lock (Dic_ClientSession)
         {
             foreach (var item in Dic_ClientSession)
             {
                 item.Value.Close();    //关闭每一个连接
             }
             Dic_ClientSession.Clear(); //清除字典
         }
         lock (Dic_ClientThread)
         {
             foreach (var item in Dic_ClientThread)
             {
                 item.Value.Abort();//停止线程
             }
             Dic_ClientThread.Clear();
         }
         Flag_Listen = false;
         TCPSocket.Shutdown(SocketShutdown.Both);//服务端不能主动关闭连接,需要把监听到的连接逐个关闭
         if (TCPSocket != null)
         {
             TCPSocket.Close();
         }
     }
     catch (Exception e)
     {
     }
 }
Пример #11
0
    public AsyncReply <bool> Trigger(ResourceTrigger trigger)
    {
        if (trigger == ResourceTrigger.Initialize)
        {
            TCPSocket listener;


            if (IP != null)
            {
                listener = new TCPSocket(new IPEndPoint(IPAddress.Parse(IP), Port));
            }
            else
            {
                listener = new TCPSocket(new IPEndPoint(IPAddress.Any, Port));
            }

            Start(listener);
        }
        else if (trigger == ResourceTrigger.Terminate)
        {
            Stop();
        }
        else if (trigger == ResourceTrigger.SystemReload)
        {
            Trigger(ResourceTrigger.Terminate);
            Trigger(ResourceTrigger.Initialize);
        }
        else if (trigger == ResourceTrigger.SystemInitialized)
        {
            Instance.Children <TCPFilter>().Then(x => filters = x);
        }

        return(new AsyncReply <bool>(true));
    }
Пример #12
0
        public AsyncReply <bool> Trigger(ResourceTrigger trigger)
        {
            if (trigger == ResourceTrigger.Initialize)
            {
                TCPSocket listener;

                if (ip != null)
                {
                    listener = new TCPSocket(new IPEndPoint(IPAddress.Parse(ip), port));
                }
                else
                {
                    listener = new TCPSocket(new IPEndPoint(IPAddress.Any, port));
                }

                Start(listener, timeout, clock);
            }
            else if (trigger == ResourceTrigger.Terminate)
            {
                Stop();
            }
            else if (trigger == ResourceTrigger.SystemReload)
            {
                Trigger(ResourceTrigger.Terminate);
                Trigger(ResourceTrigger.Initialize);
            }

            return(new AsyncReply <bool>(true));
        }
Пример #13
0
        public Client(TCPSocket sock)
        {
            Log.Info("Client", "Creating new connection to EVEmu Server");
            connection = new TCPSocket(26000, false);

            if (connection.Connect("mmoemulators.com") == false)
            {
                Log.Error("Client", "Cannot connect to EVEmu Server on port 25999");
                CloseConnection();
                return;
            }

            clientPacketizer = new StreamPacketizer();
            serverPacketizer = new StreamPacketizer();
            socket           = sock;

            serverReceive = new AsyncCallback(ServerAsyncReceive);
            clientReceive = new AsyncCallback(ClientAsyncReceive);

            // Give time to the socket
            Thread.Sleep(2000);

            AsyncState serverState = new AsyncState();

            connection.Socket.BeginReceive(serverState.buffer, 0, 8192, SocketFlags.None, serverReceive, serverState);

            AsyncState clientState = new AsyncState();

            socket.Socket.BeginReceive(clientState.buffer, 0, 8192, SocketFlags.None, clientReceive, clientState);
        }
Пример #14
0
        //static void SetPortForward(int port)
        //{
        //    try
        //    {
        //        var discoverer = new NatDiscoverer();
        //        var cts = new CancellationTokenSource(10000);
        //        var device = discoverer.DiscoverDeviceAsync(PortMapper.Upnp, cts).Result;


        //        device.CreatePortMapAsync(new Mapping(Protocol.Udp, 5001, port, "Portunus")).Wait();
        //    }
        //    catch
        //    {
        //        Console.Write(' ');
        //    }
        //}

        static async void StartTCPClient()
        {
            TCPSocket socket = new TCPSocket();


            new Thread(() =>
            {
                socket.StartListening(config.Client.Port);
            });

            socket.Send(config.Servers[0].Address, config.Servers[0].Port, "Hello Server 1, this is the client");


            while (true)
            {
                try
                {
                    socket.Send(config.Client.Address, config.Client.Port, "Hello Client, this is the host");
                    Thread.Sleep(500);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
Пример #15
0
        private void HandleKeyInstruct(KeyInstructMessage msg)
        {
            var srcAddress = IPAddress.Parse(_config.TCPServerAddress);
            var srcPort    = Int32.Parse(_config.TCPServerPort);

            var instructionSet = msg.Instructions[_config.ID];

            foreach (var instruction in instructionSet)
            {
                var dstAddress = IPAddress.Parse(instruction.Address);
                var dstPort    = Int32.Parse(instruction.Port);

                using (var tcpSocket = new TCPSocket(
                           srcAddress, srcPort,
                           dstAddress, dstPort))
                {
                    var keys = _keys.Take(instruction.KeyCount).ToList();
                    _keys.RemoveRange(0, keys.Count);

                    var keyDistribute = new KeyDistributeMessage()
                    {
                        SourceID      = _config.ID,
                        DestinationID = Constants.NULL_DESTINATION,
                        Keys          = keys
                    };

                    SendMessage(keyDistribute, tcpSocket);
                }
            }

            _t.Stop();
            _leaveFinished = true;
        }
Пример #16
0
        private void HandleKeyInstruct(KeyInstructMessage msg)
        {
            if (!msg.Instructions.ContainsKey(_config.ID))
            {
                return;
            }

            var instructionSet = msg.Instructions[_config.ID];

            foreach (var instruction in instructionSet)
            {
                int count = instruction.KeyCount;
                var keys  = _processor.Get(count).ToList();

                var srcAddress = IPAddress.Parse(_config.TCPServerAddress);
                var srcPort    = Int32.Parse(_config.TCPServerPort);
                var dstAddress = IPAddress.Parse(instruction.Address);
                var dstPort    = Int32.Parse(instruction.Port);
                using (var tcpSocket = new TCPSocket(
                           srcAddress, srcPort,
                           dstAddress, dstPort))
                {
                    var distMsg = new KeyDistributeMessage()
                    {
                        SourceID      = _config.ID,
                        DestinationID = Constants.NULL_DESTINATION,
                        Keys          = keys
                    };

                    SendMessage(distMsg, tcpSocket);
                }
            }
        }
Пример #17
0
 public bool connect()//通过按键connect
 {
     if (TCPSocket.Connect())
     {
         isConnect = true;
     }
     return(isConnect);
 }
Пример #18
0
 private void Awake()
 {
     Instance = this;
     if (tCPSocket == null)
     {
         tCPSocket = gameObject.AddComponent <TCPSocket>();
     }
 }
Пример #19
0
        public void TestLongSMTPDataSessionIncludingNewline()
        {
            long memoryUsage = Shared.GetCurrentMemoryUsage();

            _application.Settings.MaxMessageSize = 0;

            TCPSocket socket = new TCPSocket();

            socket.Connect(25);
            socket.Receive();

            socket.Send("HELO test.com\r\n");
            socket.Receive();

            // Build a large string...
            StringBuilder sb = new StringBuilder();

            sb.Append("A01");
            for (int i = 0; i < 10000; i++)
            {
                sb.Append("01234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890\r\n");
            }
            int length = sb.Length;

            sb.Append(Environment.NewLine);

            socket.Send("MAIL FROM: [email protected]\r\n");
            socket.Receive();
            socket.Send("RCPT TO: [email protected]\r\n");
            socket.Receive();
            socket.Send("DATA\r\n");
            socket.Receive();

            for (int i = 0; i < 100; i++)
            {
                Shared.AssertLowMemoryUsage(memoryUsage + 30);

                try
                {
                    socket.Send(sb.ToString());
                }
                catch (Exception)
                {
                    return;
                }
            }

            socket.Send("\r\n.\r\n");
            string result = socket.Receive();

            Assert.IsTrue(result.StartsWith("250"));

            socket.Send("QUIT\r\n");
            result = socket.Receive();
            socket.Disconnect();

            POP3Simulator.AssertMessageCount(_domain.Accounts[0].Address, "test", 1);
        }
Пример #20
0
        public async Task Execute(TCPSocket h)
        {
            this.handler = h;
            var buff = new byte[1024];
           await handler.ReceiveData(buff);
           await Respond( await GetData(buff));        
            handler.Dispose();

        }
Пример #21
0
        private void Send(byte[] data, TCPSocket to)
        {
            byte[] packet = new byte[data.Length + 4];

            Array.Copy(data, 0, packet, 4, data.Length);
            Array.Copy(BitConverter.GetBytes(data.Length), packet, 4);

            to.Send(packet);
        }
Пример #22
0
        public void TestConnection()
        {
            for (int i = 0; i < 2500; i++)
            {
                TCPSocket socket = new TCPSocket();

                Assert.IsTrue(socket.CanConnect(25));
            }
        }
Пример #23
0
 public void Setup()
 {
     lastReceivedString = "";
     listener           = new TcpListener(IPAddress.Parse("127.0.0.1"), 54540);
     listener.Start();
     client         = new TcpClient("127.0.0.1", 54540);
     acceptedClient = listener.AcceptTcpClient();
     put            = new TCPSocket(acceptedClient, this);
 }
Пример #24
0
        public void TestConnections()
        {
            TCPSocket oSocket = new TCPSocket();

            // Make sure an IP range exists.
            RemoveIPRanges();
            if (_ipRanges.Count == 0)
            {
                AddIPRange();
            }

            if (!oSocket.CanConnect(25))
            {
                throw new Exception("ERROR: Cannot connect to port 25");
            }
            if (!oSocket.CanConnect(110))
            {
                throw new Exception("ERROR: Cannot connect to port 110");
            }
            if (!oSocket.CanConnect(143))
            {
                throw new Exception("ERROR: Cannot connect to port 143");
            }

            RemoveIPRanges();

            // Now it shouldn't be possible to connect.

            if (oSocket.CanConnect(25))
            {
                throw new Exception("ERROR: Cannot connect to port 25");
            }
            if (oSocket.CanConnect(110))
            {
                throw new Exception("ERROR: Cannot connect to port 110");
            }
            if (oSocket.CanConnect(143))
            {
                throw new Exception("ERROR: Cannot connect to port 143");
            }

            AddIPRange();
            // Now it should be possible to connect again.
            if (!oSocket.CanConnect(25))
            {
                throw new Exception("ERROR: Cannot connect to port 25");
            }
            if (!oSocket.CanConnect(110))
            {
                throw new Exception("ERROR: Cannot connect to port 110");
            }
            if (!oSocket.CanConnect(143))
            {
                throw new Exception("ERROR: Cannot connect to port 143");
            }
        }
Пример #25
0
        public void TestLongSMTPDataSessionWithoutNewline()
        {
            long memoryUsage = Shared.GetCurrentMemoryUsage();

            TCPSocket socket = new TCPSocket();

            socket.Connect(25);
            socket.Receive();

            socket.Send("HELO test.com\r\n");
            socket.Receive();

            // Build a large string...
            StringBuilder sb = new StringBuilder();

            sb.Append("A01");
            for (int i = 0; i < 10000; i++)
            {
                sb.Append("01234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890");
            }
            int length = sb.Length;

            socket.Send("MAIL FROM: [email protected]\r\n");
            socket.Receive();
            socket.Send("RCPT TO: [email protected]\r\n");
            socket.Receive();
            socket.Send("DATA\r\n");
            socket.Receive();

            for (int i = 0; i < 1000; i++)
            {
                Shared.AssertLowMemoryUsage(memoryUsage + 30);

                try
                {
                    socket.Send(sb.ToString());
                }
                catch (Exception)
                {
                    return;
                }
            }

            socket.Send("\r\n.\r\n");
            string result = socket.Receive();

            Assert.IsTrue(result.StartsWith("554 Too long line was received. Transmission aborted."));

            socket.Send("QUIT\r\n");
            result = socket.Receive();


            socket.Disconnect();
        }
Пример #26
0
        public Connection(TCPSocket sock)
        {
            socket     = sock;
            packetizer = new StreamPacketizer();
            thr        = new Thread(Run);

            if (sock.Blocking == true)
            {
                sock.Blocking = false;
            }
        }
Пример #27
0
        private void createNewStack(TcpClient client, int portID)
        {
            ICommand   user          = realm.AddUser();
            Codec      newCodec      = new Codec(user);
            Packetiser newPacketiser = new Packetiser(newCodec, "\r\n");
            TCPSocket  newSocket     = new TCPSocket(client, newPacketiser);

            packetisers.Add(newPacketiser);
            sockets.Add(newSocket);
            codecs.Add(newCodec);
        }
Пример #28
0
        /*
         * const int Server_Port = 5001;
         * const string SERVER_IP = "69.6.36.79";
         *
         * const int CLIENT_PORT_NO = 5001;
         * const string CLIENT_SERVER_IP = "84.255.45.106";
         *
         * const int Source_PORT_NO = 5001;
         * const string Source_SERVER_IP = "18.223.23.99";
         */


        static async void StartTCPClient()
        {
            TCPSocket socket = new TCPSocket();

            socket.StartListening(config.Servers[0].Port);

            UDPSocket sock = new UDPSocket();


            await sock.StartListening(config.Servers[0].Port);
        }
Пример #29
0
    // Use this for initialization
    void Start()
    {
        //  底层 自动分配一个端口号
        Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        // IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 18001);

        // client.Bind(endPoint);

        tcpSocket = new TCPSocket(client, 1024, true);
    }
Пример #30
0
        public static async Task GetFile(string path, string filename)
        {
            path += filename;
            IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse(ConfigurationManager.AppSettings["Ip"].ToString()),
                                                int.Parse(ConfigurationManager.AppSettings["Port"].ToString()));

            using (var socket = new TCPSocket(StaticData.MyAddress, ipPoint))
            {
                await socket.Connect();

                var bytePath = ASCIIEncoding.ASCII.GetBytes(filename.ToArray());
                var toSend   = new byte[bytePath.Length + 1];
                toSend[0] = 77;
                for (int i = 0; i < bytePath.Length; i++)
                {
                    toSend[i + 1] = bytePath[i];
                }
                await socket.SendData(toSend);


                var temp = new byte[12];

                await socket.ReceiveData(temp);

                var length = BitConverter.ToInt64(temp, 0);
                if (length == 0)
                {
                    MessageBox.Show("File doesn't exist");
                    return;
                }
                int packageSize = BitConverter.ToInt32(temp, 8);
                var data        = new byte[packageSize];
                using (FileStream file = new FileStream(path, FileMode.Create, FileAccess.Write))
                {
                    int iter = (int)((length) / packageSize);
                    for (int i = 0; i < iter; i++)
                    {
                        data = new byte[packageSize];

                        await socket.ReceiveData(data);


                        await file.WriteAsync(data, 0, packageSize);

                        await socket.SendData(new byte[] { 255 });
                    }

                    var bytes = await socket.ReceiveData(data);

                    await file.WriteAsync(data, 0, bytes);
                }
            }
        }
Пример #31
0
        static void Main(string[] args)
        {
            Log.Init("proxy");

            waiting = new List <Connection>();

            Log.Trace("Main", "Connecting to Database");
            if (Database.Database.Init() == false)
            {
                while (true)
                {
                    Thread.Sleep(1);
                }
            }

            Log.Debug("Main", "Connected to database sucesfull");
            Log.Trace("Main", "Reseting Solar Systems' status");

            Log.Trace("Main", "Starting listener on port 26000");
            listener = new TCPSocket(26000, false);

            if (listener.Listen(int.MaxValue) == false)
            {
                Log.Error("Main", "Cannot listen on port 26000");
                while (true)
                {
                    ;
                }
            }

            Log.Debug("Main", "Listening on port 26000");

            LoginQueue.Start();

            // Add two nodes to the NodeManager
            NodeManager.AddNode(null);
            NodeManager.AddNode(null);

            while (true)
            {
                Thread.Sleep(1);

                TCPSocket con = listener.Accept();

                if (con != null)
                {
                    Connection tmp = new Connection(con);
                    tmp.Start();
                    waiting.Add(tmp);
                }
            }
        }
Пример #32
0
        public void AuthShouldUpdateLastLogonTime()
        {
            hMailServer.Account account = SingletonProvider<Utilities>.Instance.AddAccount(_domain, "*****@*****.**", "test");
             DateTime lastLogonTimeBefore = Convert.ToDateTime(account.LastLogonTime);

             System.Threading.Thread.Sleep(1000);
             TCPSocket sock = new TCPSocket();
             sock.Connect(25);
             Assert.IsTrue(sock.Receive().StartsWith("220"));
             sock.Send("EHLO test.com\r\n");
             Assert.IsTrue(sock.Receive().StartsWith("250"));

             string base64EncodedUsername = EncodeBase64("*****@*****.**");
             sock.Send("AUTH LOGIN " + base64EncodedUsername + "\r\n");
             Assert.IsTrue(sock.Receive().StartsWith("334"));

             sock.Send(EncodeBase64("test") + "\r\n");
             Assert.IsTrue(sock.Receive().StartsWith("235"));

             DateTime lastLogonTimeAfter = Convert.ToDateTime(SingletonProvider<Utilities>.Instance.GetApp().Domains[0].Accounts[0].LastLogonTime);
             Assert.AreNotEqual(lastLogonTimeBefore, lastLogonTimeAfter);
        }
Пример #33
0
        public void TestConnections()
        {
            TCPSocket oSocket = new TCPSocket();

             // Make sure an IP range exists.
             RemoveIPRanges();
             if (_ipRanges.Count == 0)
            AddIPRange();

             if (!oSocket.CanConnect(25))
            throw new Exception("ERROR: Cannot connect to port 25");
             if (!oSocket.CanConnect(110))
            throw new Exception("ERROR: Cannot connect to port 110");
             if (!oSocket.CanConnect(143))
            throw new Exception("ERROR: Cannot connect to port 143");

             RemoveIPRanges();

             // Now it shouldn't be possible to connect.

             if (oSocket.CanConnect(25))
            throw new Exception("ERROR: Cannot connect to port 25");
             if (oSocket.CanConnect(110))
            throw new Exception("ERROR: Cannot connect to port 110");
             if (oSocket.CanConnect(143))
            throw new Exception("ERROR: Cannot connect to port 143");

             AddIPRange();
             // Now it should be possible to connect again.
             if (!oSocket.CanConnect(25))
            throw new Exception("ERROR: Cannot connect to port 25");
             if (!oSocket.CanConnect(110))
            throw new Exception("ERROR: Cannot connect to port 110");
             if (!oSocket.CanConnect(143))
            throw new Exception("ERROR: Cannot connect to port 143");
        }
Пример #34
0
        public void TestOnClientConnectVBScript()
        {
            hMailServer.Application app = SingletonProvider<Utilities>.Instance.GetApp();
             hMailServer.Scripting scripting = app.Settings.Scripting;

             string script = "Sub OnClientConnect(oClient) " + Environment.NewLine +
                               " EventLog.Write(\"Port: \" & oClient.Port) " + Environment.NewLine +
                               " EventLog.Write(\"Address: \" & oClient.IPAddress) " + Environment.NewLine +
                               " EventLog.Write(\"Username: \" & oClient.Username) " + Environment.NewLine +
                          "End Sub" + Environment.NewLine + Environment.NewLine;

             File.WriteAllText(scripting.CurrentScriptFile, script);

             scripting.Enabled = true;
             scripting.Reload();

             string eventLogFile = app.Settings.Logging.CurrentEventLog;
             if (File.Exists(eventLogFile))
            File.Delete(eventLogFile);

             TCPSocket socket = new TCPSocket();
             Assert.IsTrue(socket.CanConnect(25));

             // Check that the message exists
             string message = Utilities.ReadExistingTextFile(eventLogFile);

             Assert.IsNotEmpty(message);
             Assert.IsTrue(message.Contains("Port: 25"));
             Assert.IsTrue(message.Contains("Address: 127"));
             Assert.IsTrue(message.Contains("Username: \"")); // Should be empty, Username isn't available at this time.
        }
Пример #35
0
        public void TestPortInUse()
        {
            hMailServer.Application application = SingletonProvider<Utilities>.Instance.GetApp();
              application.Stop();

              var serverSocket = new ServerSocket(1, 25);
              serverSocket.StartListen();

              application.Start();
              TCPSocket sock = new TCPSocket();
              // make sure it's possible to connect to the non blocked port.

              sock.CanConnect(110);
              sock.CanConnect(143);

              //let this our temp server die.
              sock.CanConnect(25);

              // make sure that hMailServer reported an error during start up because the ports were blocked.
              Utilities.AssertReportedError();

              // restart hMailServer again. everything is now back to normal.
              application.Stop();
              application.Start();
              sock.CanConnect(25);
        }
Пример #36
0
        public void TestLongLineInPOP3Conversation()
        {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < 400; i++)
            {
                sb.Append("1234567890");
            }

            sb.Append(".com");

            string command = "NOOP " + sb.ToString();

            TCPSocket socket = new TCPSocket();
            Assert.IsTrue(socket.Connect(110));
            socket.Receive();
            socket.Send(command + "\r\n");

            string response = socket.Receive();
            Assert.IsFalse(response.StartsWith("+OK"));

            socket.Disconnect();
        }
        public void TestSMTPServerAuthPlain()
        {
            _settings.AllowSMTPAuthPlain = true;

            TCPSocket sock = new TCPSocket();
            sock.Connect(25);
            Assert.IsTrue(sock.Receive().StartsWith("220"));
            sock.Send("EHLO test.com\r\n");
            Assert.IsTrue(sock.Receive().StartsWith("250"));
            sock.Send("AUTH PLAIN\r\n");
            Assert.IsTrue(sock.Receive().StartsWith("334"));

            string str = "\t" + GetUsername() + "\t" + GetPassword();

            sock.Send(EncodeBase64(str) + "\r\n");
            Assert.IsTrue(sock.Receive().StartsWith("535"));
            EnsureNoPassword();
        }
        public void TestSMTPServerAuthLoginUsernameAsThirdParameter()
        {
            _settings.AllowSMTPAuthPlain = true;

               TCPSocket sock = new TCPSocket();
               sock.Connect(25);
               Assert.IsTrue(sock.Receive().StartsWith("220"));
               sock.Send("EHLO test.com\r\n");
               Assert.IsTrue(sock.Receive().StartsWith("250"));

               string base64EncodedUsername = EncodeBase64(GetUsername());
               sock.Send("AUTH LOGIN " + base64EncodedUsername + "\r\n");
               Assert.IsTrue(sock.Receive().StartsWith("334"));

               sock.Send(EncodeBase64(GetPassword()) + "\r\n");
               Assert.IsTrue(sock.Receive().StartsWith("535"));
               EnsureNoPassword();
        }
Пример #39
0
        public void TestEHLOKeywords()
        {
            hMailServer.Application application = SingletonProvider<Utilities>.Instance.GetApp();
              hMailServer.Settings settings = _settings;
              settings.HostName = "examplify.com";

              TCPSocket socket = new TCPSocket();
              Assert.IsTrue(socket.Connect(25));
              string result = socket.Receive();
              socket.Send("EHLO example.com\r\n");
              result = socket.Receive();
              socket.Disconnect();
              Assert.IsTrue(result.Contains("250-" + settings.HostName));
        }