Exemplo n.º 1
0
        protected virtual void DoUPnPExternalRecieveAccess()
        {
            try
            {
                tcpListener         = new TcpConnectionListener(Port);
                tcpListener.Update += new FmdcEventHandler(DoUPnPExternalRecieveAccess_Update);
                tcpListener.Start();

                // Don't do this if we don't have external ip
                if (
                    (Functions.UPnPDevices & Success) == Functions.UPnPDevices &&
                    (Functions.UPnPIGD & Success) == Functions.UPnPIGD &&
                    (Functions.UPnPExternalIp & Success) == Functions.UPnPExternalIp &&
                    (Functions.UPnPAddMapping & Success) == Functions.UPnPAddMapping &&
                    (Functions.UPnPGetMapping & Success) == Functions.UPnPGetMapping &&
                    (Functions.UPnPDeleteMapping & Success) == Functions.UPnPDeleteMapping
                    )
                {
                    bool hasAddPortMapping = false;
                    if (hasAddPortMapping = wanipService.AddPortMapping(this, mapping))
                    {
                        //Transfer transfer = new Transfer(ExternalIPUPnP.ToString(), Port);
                        Transfer transfer = new Transfer(ExternalIP.ToString(), Port);
                        UserInfo me       = new UserInfo();
                        me.DisplayName     = "upnp";
                        me.TagInfo.Version = "FlowLibPowered";
                        transfer.Share     = new Share("temp");
                        transfer.Me        = me;
                        transfer.Source    = new Source(ExternalIP.ToString(), "upnp");
                        transferManager.AddTransferReq(new TransferRequest("upnp", null, new UserInfo()));

                        transfer.Protocol = new TransferNmdcProtocol(transfer);
                        transferManager.StartTransfer(transfer);

                        // Wait 60 seconds before continue
                        int i = 0;
                        do
                        {
                            Thread.Sleep(50);
                        } while (((Functions.UPnPExternalRecieveAccess & Success) != Functions.UPnPExternalRecieveAccess) && i++ > 1200);

                        // clean;
                        wanipService.DeletePortMapping(this, mapping);
                    }
                }

                tcpListener.Update -= DoUPnPExternalRecieveAccess_Update;
                tcpListener.End();
                tcpListener = null;
            }
            finally
            {
                Progress = Functions.End;
            }
        }
Exemplo n.º 2
0
        protected virtual void DoExternalRecieveAccess()
        {
            try
            {
                tcpListener         = new TcpConnectionListener(Port);
                tcpListener.Update += new FmdcEventHandler(DoExternalRecieveAccess_Update);
                tcpListener.Start();

                // Don't do this if we don't have external ip
                if ((Functions.ExternalIp & Success) == Functions.ExternalIp)
                {
                    Transfer transfer = new Transfer(ExternalIP.ToString(), Port);
                    UserInfo me       = new UserInfo();
                    me.DisplayName     = "external";
                    me.TagInfo.Version = "FlowLibPowered";
                    transfer.Share     = new Share("temp");
                    transfer.Me        = me;
                    transfer.Source    = new Source(ExternalIP.ToString(), "external");
                    transferManager.AddTransferReq(new TransferRequest("external", null, new UserInfo()));

                    transfer.Protocol = new TransferNmdcProtocol(transfer);
                    transferManager.StartTransfer(transfer);
                }

                // Wait 30 seconds before continue
                int i = 0;
                do
                {
                    Thread.Sleep(50);
                } while (((Functions.ExternalRecieveAccess & Success) != Functions.ExternalRecieveAccess) && i++ > 600);

                // clean;
                tcpListener.Update -= DoExternalRecieveAccess_Update;
                tcpListener.End();
                tcpListener = null;
            }
            finally
            {
                if ((Functions.ExternalRecieveAccess & Success) == Functions.ExternalRecieveAccess)
                {
                    Progress = Functions.End;
                }
                else
                {
                    Progress = Functions.UPnPDevices;
                }
            }
        }
Exemplo n.º 3
0
 public void TestMethod1()
 {
     var externalIp = ExternalIP.Get();
 }