Ejemplo n.º 1
0
 private void OnDeviceDiscoveryDeviceDiscovered(object sender, GenericEventArgs <UpnpDeviceInfo> e)
 {
     NatUtility.Search(e.Argument.LocalIpAddress, NatProtocol.Upnp);
 }
Ejemplo n.º 2
0
        public static void Main(string[] args)
        {
            Console.WriteLine("CallOfNat");
            Parser.Default.ParseArguments <Options>(args)
            .WithParsed <Options>(o =>
            {
                if (!o.Game.Equals(""))
                {
                    GameName = o.Game;
                }

                if (o.RemoveMode)
                {
                    Mode = Mode.REMOVE;
                }
                if (o.ListPorts)
                {
                    Mode = Mode.LISTPORT;
                }
                if (o.ListGames)
                {
                    Mode = Mode.LISTGAME;

                    //Liste des jeux possibles
                    string path          = System.Reflection.Assembly.GetExecutingAssembly().Location;
                    var directory        = System.IO.Path.GetDirectoryName(path);
                    var gamesDirectory   = System.IO.Path.Combine(directory, "Games");
                    string[] pluginFiles = System.IO.Directory.GetFiles(gamesDirectory, "*.dll");
                    foreach (string file in pluginFiles)
                    {
                        var asm = System.Reflection.Assembly.LoadFile(file);
                        try
                        {
                            if (!AssemblyLoader.ValidateAssembly(asm))
                            {
                                continue;
                            }
                            if (asm.GetName().Name.StartsWith("CallOfNat.Game."))
                            {
                                Console.WriteLine(asm.GetName().Name.Replace("CallOfNat.Game.", ""));
                            }
                        } catch (InvalidOperationException)
                        {
                        }
                    }

                    Environment.Exit(0);
                }

                // Raised whenever a device is discovered.
                NatUtility.DeviceFound += DeviceFound;

                // If you know the gateway address, you can directly search for a device at that IP
                if (!o.IpAddress.Equals(""))
                {
                    NatUtility.Search(System.Net.IPAddress.Parse(o.IpAddress), NatProtocol.Pmp);
                    NatUtility.Search(System.Net.IPAddress.Parse(o.IpAddress), NatProtocol.Upnp);
                }
                //On démarre
                NatUtility.StartDiscovery();

                Console.WriteLine("Discovery started");

                while (true)
                {
                    //Toutes les 500 secondes on refait tourner le script au cas où les règles ne sont plus là
                    Thread.Sleep(500000);
                    NatUtility.StopDiscovery();
                    NatUtility.StartDiscovery();
                }
            });
        }