private void InternalStartNetworking()
        {
            Console.WriteLine();

            if (!Network.Listen())
            {
                Log.Error("An error occurred while attempting to connect.");
            }
            else
            {
                Console.WriteLine(Strings.Intro.started.ToString(Options.ServerPort));
            }

#if WEBSOCKETS
            WebSocketNetwork.Init(Options.ServerPort);
            Log.Pretty.Info(Strings.Intro.websocketstarted.ToString(Options.ServerPort));
            Console.WriteLine();
#endif

            RestApi.Start();

            if (!Options.UPnP || Instance.StartupOptions.NoNatPunchthrough)
            {
                return;
            }

            Console.WriteLine();

            UpnP.ConnectNatDevice().Wait(5000);
#if WEBSOCKETS
            UpnP.OpenServerPort(Options.ServerPort, Protocol.Tcp).Wait(5000);
#endif
            UpnP.OpenServerPort(Options.ServerPort, Protocol.Udp).Wait(5000);

            if (RestApi.IsStarted)
            {
                RestApi.Configuration.Ports.ToList()
                .ForEach(port => UpnP.OpenServerPort(port, Protocol.Tcp).Wait(5000));
            }

            Console.WriteLine();

            Bootstrapper.CheckNetwork();

            Console.WriteLine();
        }
Exemplo n.º 2
0
        internal static void CheckNetwork()
        {
            //Check to see if AGD can see this server. If so let the owner know :)
            if (Options.OpenPortChecker && !Context.StartupOptions.NoNetworkCheck)
            {
                var serverAccessible = PortChecker.CanYouSeeMe(Options.ServerPort, out var externalIp);

                Console.WriteLine(Strings.Portchecking.connectioninfo);
                if (!string.IsNullOrEmpty(externalIp))
                {
                    Console.WriteLine(Strings.Portchecking.publicip, externalIp);
                    Console.WriteLine(Strings.Portchecking.publicport, Options.ServerPort);

                    Console.WriteLine();
                    if (serverAccessible)
                    {
                        Console.WriteLine(Strings.Portchecking.accessible);
                        Console.WriteLine(Strings.Portchecking.letothersjoin);
                    }
                    else
                    {
                        Console.WriteLine(Strings.Portchecking.notaccessible);
                        Console.WriteLine(Strings.Portchecking.debuggingsteps);
                        Console.WriteLine(Strings.Portchecking.checkfirewalls);
                        Console.WriteLine(Strings.Portchecking.checkantivirus);
                        Console.WriteLine(Strings.Portchecking.screwed);
                        Console.WriteLine();
                        if (!UpnP.ForwardingSucceeded())
                        {
                            Console.WriteLine(Strings.Portchecking.checkrouterupnp);
                        }
                    }
                }
                else
                {
                    Console.WriteLine(Strings.Portchecking.notconnected);
                }

                Console.WriteLine();
            }
        }